Android Studio SDK 版本22 渲染异常:Action Bar。

51

当我在Android Studio上创建新项目时,没有遇到任何问题。然而,查看activity_main.xml设计时,它显示了以下内容:

呈现问题:在呈现期间引发了“action_bar”异常。

当我从设计页面将sdk级别从22更改为21时,Android Studio不显示任何内容。

我该如何解决这个问题?虽然这不是很重要的问题,但我想知道如何修复它。

10个回答

96

是的,我只需要在下拉菜单中调整Android级别。API级别22中的设计选项卡预览现在已经损坏了。我查看了错误的堆栈跟踪,似乎与需要alpha通道有关。我相信谷歌会在周一修复它。 :) 输入图像描述


4
我认为仍然没有解决 :( - Raman Singh
1
还没有。它被报告了吗? - Menachem Hornbacher
6
哪个月/年的星期一? :) - Alberto M
3
那个星期一不会到来。 - David

20

ActionBar已经被弃用,而Toolbar则是在API 21中添加的。然而,Android Studio模板的基础主题仍然使用基于ActionBar的主题。

解决方案不是降级您的构建工具版本,而是更改应用程序的基础主题。如果降级您的构建工具,您将错过对Android 5.1及更高版本中添加的最新功能的支持。

您的基础主题在AndroidManifest.xml下的application/android:theme中列出。

转到res/values/styles.xml并将父属性更改为不依赖于已弃用的ActionBar的其他基础主题。在极少数情况下,如果您的应用程序是API 21+,则可以使用Theme.Material。否则,您需要使用Theme.AppCompat.NoActionBar或定义自己的基础主题。

以下是styles.xml的示例:

<style name="AppTheme.Base" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

如果您使用此功能,请确保在XML布局中放置一个Toolbar元素,以显示ActionBar。您需要使用子XML标签自定义Toolbar。我建议使用标签。正如Toolbar文档中所说,Google的新设计原则要求改变视觉样式:
在现代Android UI中,开发人员应该更倾向于为工具栏使用外观上不同的配色方案,而不是使用应用程序图标。在API 21及更高版本的设备上,不推荐使用应用程序图标加标题作为标准布局。
android.support.v7.widget.Toolbar适用于API 21之前的设备的支持库。
编辑:正如第一个评论所指出的那样,Google有一篇博客解释如何使用新的Toolbar。 http://android-developers.blogspot.kr/2014/10/appcompat-v21-material-design-for-pre.html

这是完整的未来证明答案。Android开发者博客上有一些非常好的文档,涉及此情况http://android-developers.blogspot.kr/2014/10/appcompat-v21-material-design-for-pre.html。 - jalvarado91

17
很抱歉大家遇到问题。这个问题的原因是渲染库现在试图使用更多来自appcompat库的实际代码,以便更准确。但是,当项目未构建时,这已经暴露了一些Android Studio的错误。
不需要更新gradle文件或更改样式,如一些答案所建议的那样。
解决方法是先构建项目,然后通过清除缓存来刷新渲染。请参见附图中的刷新图标以清除缓存。

非常感谢!真的帮了大忙 :-) - Menachem Hornbacher

4
这个答案对我有用:
MyActivity extends AppCompatActivity

替代方案:

MyActivity extends ActionBarActivity   // now deprecated

回到预览页面,清除缓存并刷新!


1

通过几天的挫败,我终于发现答案在我的应用模块build.gradle里!我将buildToolsVersion22改为21.1.2来正确解决了你遇到的确切异常。目前,与API 22:Android 5.1有关的任何事情都会出现问题。希望Google能尽快修复。

更改build.gradle中的这些行可为我解决了这个问题:

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
}

0
解决方案:

创建一个新文件夹

values-v19

在此文件夹中创建styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- For actionBar n' statusbar -->
    <item name="colorPrimary">#COLOR/item>
    <item name="colorPrimaryDark">#COLOR</item>

    <!-- For items -->
    <item name="colorAccent">#COLOR</item>
</style>

就是这样 :)


0
请使用API21构建以查看预览。我在Mac上,构建22无法正常工作。当我切换回构建21时,我可以看到预览!

0

我通过重新构建项目或模块解决了它。


0
原来你不能使用 buildToolsVersion "22" 或者 targetSdkVersion 22,因为它无法正确渲染。目前看来只有设置成 API 21 或更低版本才能正常渲染应用程序,因为我也遇到了同样的错误,只要我将其改回 21 就可以再次工作了。只需进入 build.gradle(module:app) 并将 API 改回最新版本的 API 21 即可。

0

我通过修改build.gradle (模块:app)中的buildToolsVersion "21.1.2"来解决了这个问题。

不要使用buildToolsVersion "22"


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