错误:渲染问题 以下类找不到android.support.v7.internal.widget.ActionBarOverlayLayout

97

我只是一个Android应用程序开发的初学者。当我在Android Studio 1.1.0上创建新项目时,出现了以下错误:渲染问题-无法找到以下类:android.support.v7.internal.widget.ActionBarOverlayLayout

现在我已经在Google上搜索过了,并发现大多数人给出了可能的三种解决方案。

他们说:

  1. 要么将api(从预览窗口窗格)从22更改为21,或者
  2. 将应用程序主题从“项目主题”更改为任何其他主题。
  3. 确保在项目结构->依赖项中正确导入了appcompat-v7库,请参考以下步骤:: 将支持库功能项目标识符添加到依赖项部分。例如,要包括appcompat项目,请将compile“com.android.support:appcompat-v7:18.0.+”添加到依赖项部分,如下例所示:
dependencies {
    ...
    compile "com.android.support:appcompat-v7:18.0.+" }
注意:我的Android支持库已经是最新的(使用SDK管理器安装)。按照前两个步骤,已经解决了错误。但我觉得这些不是永久的解决方案,第二步似乎只是一个临时的解决方法。我对第一步也有疑问,如果要消除错误,我们将API从22更改为21,那么最终,我们的应用程序将无法在Android 5.1.1(API 22)中运行,仅限于Android 5.0.1及以下版本(API 21)。我的疑虑是否正确?关于第三步,它是否是此问题的永久解决方案?
注:抱歉标签不匹配,由于站点声望不允许添加精确标签。

1
对我来说,即使前两步都不能解决问题...我在所有包含android.support.*视图的布局中遇到了“渲染问题”。这真让人沮丧! - user1987392
7个回答

162

请像这样修复 res/values/styles.xml

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"/>

如所请求的那样进行详细说明:Theme.AppCompat.Light.DarkActionBar 是超类 Base 的一个子类。在 Android Studio 中按 Ctrl+单击它,您将被带到源代码:

<style name="Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar" />

我们没有改变任何东西,我们只是更精确地定义了它。


29
哇,Android Studio的开箱体验真是太差了。 - Warren P
6
如果我想使用"Theme.AppCompat.Light.NoActionBar",那么怎么做? - Haseeb Jadoon
4
奇怪的是,加上“Base.”这个词对我有用。“All your base are belong to us.” - SMBiggs
1
对我也起作用了...我正在处理一个旧应用程序,Base修复了错误! - Dumbo
1
为什么精确定义主题可以修复问题? - Robert
显示剩余4条评论

29

自从Android Studio 1.1版本以来就已知的一个Bug(在1.2和1.3 preview版中仍然存在)。将预览的API级别从22切换到21对大多数人都可以解决问题。在等待修复时,您也可以尝试此方法。

输入图像描述

最初的回答在这里:Android Studio v 1.1 / 1.2中的渲染问题

重新发布


16

修改 src/res/values/styles.xml

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"></style>

然后选择API22,你会发现这个问题得到了解决!


3

在遇到这个错误后,我使用API-22 Android 5.1.1,但问题仍然存在。不过你可以在Android Studio工具栏顶部选择:

Material Light -> Material Light

然后你就可以看到以工具栏和浅色主题的形式预览。

希望对你有所帮助。


1
我通过切换到Holo Dark主题,然后再切换回App主题来解决了这个问题。我只是在Android Studio的旋转视图旁边点击了上面的按钮,上面写着App主题。大约有10%的时间,仅仅这样还不够,我还需要将查看器的API从22更改为19。
不知道为什么这样做有效,但是上面提供的建议对我没有用。

0

你不需要更改主题。也许你正在扩展ActionBarActivity(已弃用),而不仅仅是Activity。更改它并构建项目。


新规则@Kleyton,建议继承AppCompatActivity(根据Google Android开发者页面),而不是扩展ActionBarActivity(现已弃用)。 - Ashish Goyal

0

如果您将活动从ActionBarActivity更改为Activity,请不要忘记导入Activity本身。即

import android.app.Activity

这很糟糕,但嘿,这是他们的错,而不是我们的。

此外,您可以通过按下“AppTheme”并选择Holo.Light.DarkActionBar来简单地更改主题。它会自动更新styles.xml文件。之后,重新构建项目。

我已经做了所有这些,对我有效,尽管我认为Google和IntelliJ的人应该解决这个渲染问题,因为我们被告知要从Eclipse迁移到Android Studio。


兄弟,新规则出来了!现在建议继承AppCompatActivity(根据Google Android开发者页面),而不是扩展ActionBarActivity(已被弃用)。 - Ashish Goyal
它的工作方式是否与Activity相同?它是否处理XML渲染问题? - Andrecon
根据Google Android开发者页面,它(AppCompatActivity)确实照顾了ActionBarActivity曾经处理的一切。 - Ashish Goyal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接