当我使用itemBarStyle项时,colorPrimary不会将颜色设置为红色。 如果我删除项目actionBarStyle,它的工作原理。如何更改我的代码以显示颜色?
<resources>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="actionBarStyle">@style/MyStyledActionBar</item>
<item name="colorPrimary">@color/red</item>
</style>
<style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="titleTextStyle">@style/MyActionBarTitleText</item>
</style>
<style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>
</resources>
答案 0 :(得分:6)
Widget.AppCompat.Light.ActionBar
的根目录是Base.Widget.AppCompat.ActionBar
,它不会应用背景属性。
<style name="Base.Widget.AppCompat.ActionBar" parent="">
...
<item name="background">@null</item>
<item name="backgroundStacked">@null</item>
<item name="backgroundSplit">@null</item>
...
</style>
相反,您的父级应为Widget.AppCompat.Light.ActionBar.Solid
,以便您继承Base.Widget.AppCompat.Light.ActionBar.Solid
中应用背景属性的属性。
<style name="Base.Widget.AppCompat.Light.ActionBar.Solid">
<item name="background">?attr/colorPrimary</item>
<item name="backgroundStacked">?attr/colorPrimary</item>
<item name="backgroundSplit">?attr/colorPrimary</item>
</style>
或者,您可以自己应用背景属性。
<style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="titleTextStyle">@style/MyActionBarTitleText</item>
<item name="background">?attr/colorPrimary</item>
</style>