根据https://developer.android.com/training/material/theme.html,colorPrimary
应设置操作栏颜色。
当mainActivity
扩展Activity
时,这会有效,但当我延伸AppCompatActivity
(或现已弃用的ActionBarActivity
)时,它会中断。
因此对AppCompatActivity
我必须使用:
values/style.xml
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimaryDark">@color/MaterialTeal800</item>
<item name="colorPrimary">@color/MaterialTeal500</item>
<!--<item name="colorPrimaryLight">@color/MaterialLightPrimary</item>-->
<!--<item name="colorDivider">@color/MaterialDivider</item>-->
<item name="colorAccent">@color/MaterialDeepOrange500</item>
<!--<item name="colorAccentPressed">@color/MaterialDeepOrange800</item>-->
</style>
<style name="AppTheme" parent="AppBaseTheme">
<!-- Customize your theme here. -->
<item name="android:textColor">@color/black</item>
<item name="android:textColorSecondary">@color/MaterialSecondary</item>
<item name="android:textColorPrimary">@color/black</item>
<item name="actionBarTabTextStyle">@style/TitleText</item>
</style>
<style name="TitleText" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:textColor">@color/white</item>
</style>
正确地为状态栏着色,但 NOT 操作栏。
(对于v21,无论如何)Activity
它与
<style name="AppBaseTheme" parent="android:Theme.Material.Light.DarkActionBar">
<!-- android:Theme.Material.Light.DarkActionBar -->
<!-- Theme.AppCompat.Light.DarkActionBar -->
<item name="android:colorPrimaryDark">@color/MaterialTeal800</item>
<item name="android:colorPrimary">@color/MaterialTeal500</item>
<!--<item name="android:colorPrimaryLight">@color/MaterialLightPrimary</item>-->
<item name="android:textColor">@color/black</item>
<item name="android:actionBarTabTextStyle">@style/TitleText</item>
<item name="android:textColorSecondary">@color/MaterialSecondary</item>
<!--<item name="android:colorDivider">@color/MaterialDivider</item>-->
<item name="android:textColorPrimary">@color/black</item>
<item name="android:colorAccent">@color/MaterialDeepOrange500</item>
</style>
如果我不使用Activity
并使用AppCompatActivity
,则会在发布时崩溃,并说:
java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)。
我希望与AppCompatActivity
一起使用兼容性,但我无法弄清楚为什么它没有提升颜色(但相同的代码效果很好)与活动 - 我喜欢使用API 21+上的所有新选项。它似乎拿起状态栏似乎是错误的,但我需要手动覆盖操作栏上的自定义样式(a-la this answer)。我一直在挑选和选择吗?没有材质主题或过渡,或向后兼容?
请注意,这是不工具栏。这是操作栏 - 我知道我可以在添加的工具栏元素上使用android:background
。
看起来我可以通过删除v21 AppCompatActivity
命名空间让操作栏与android:
一起着色,但如果我尝试使用真实的材质主题,仍会出现崩溃......
答案 0 :(得分:2)
在这里你应该删除app:compat主题的android:前缀,如:
<item name="colorPrimaryDark">@color/MaterialTeal800</item>
并在styles-v21
中<item name="android:colorPrimaryDark">@color/MaterialTeal800</item>