无法修改 ActionBar 主题

新手正在学习 Android 编程,今天学到自定义主题的内容。但是发现无论如何,主题都没有发生变化。例如,我要修改 ActionBar 的颜色,代码如下:

<resources>
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>
    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="android:background">#999999</item>
    </style>
</resources>

结果 ActionBar 的背景颜色并没有改变。设置其他自定义主题也没用。后来通过代码修改:

ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(0xadf1b1ff));

然而也没有效果。我在 Ubuntu 下用的 Android Studio 1.2.2 版本,最低编译版本 4.1,目标编译版本 5.1,不知道怎么会这样,望高手解答。

阅读 4.7k
2 个回答

自己来答一下,在其他地方找到了解决办法:
就是属性前绝对不能有 android: 这个东西,我一把这个东西去掉,自定义主题就生效了。
android: 这个是 Android Studio 自动添加上的,要手动去掉。
问题是解决了,但还是不知道原因是什么,望高手解答。

命名空间的问题。

你是不是用Toolbar替代了ActionBar

设置style再通过style:@style/my_style等同于直接设置xml属性,这些资源在创建Toolbar实例时通过资源ID获取,也就是R.class. 但是这里有很多R.class, 系统的是android.R, 应用的是R, android.R不支持新的属性,所以经过R作兼容处理的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题