gpt4 book ai didi

android - AppCompatActivity 不对操作栏使用 colorPrimary?

转载 作者:行者123 更新时间:2023-11-29 20:48:04 25 4
gpt4 key购买 nike

根据 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>

它正确地为状态栏着色,但不是操作栏。

并且(对于 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: You need to use a Theme.AppCompat theme (or descendant) with this activity.

我想与 AppCompatActivity 一起运行以获得兼容性,但我无法弄清楚为什么它没有拾取颜色(但相同的代码与 Activity 配合得很好——并且我喜欢在 API 21+ 上使用所有更新的选项)。它选择状态栏似乎是错误的,但我需要手动覆盖操作栏上的自定义样式(a-la this answer)。我是不是一直在挑挑拣拣?没有 Material 主题或过渡,或向后兼容性?

请注意,这不是工具栏。这是操作栏——我知道我可以在添加的工具栏元素上使用 android:background

更新

看起来我可以通过删除 v21 android: 命名空间让操作栏使用 AppCompatActivity 着色,但是如果我尝试使用真实的 Material 主题仍然会崩溃...

最佳答案

在这里你应该删除 android: app compat 主题的前缀,例如:

<item name="colorPrimaryDark">@color/MaterialTeal800</item>

在 styles-v21 中

<item name="android:colorPrimaryDark">@color/MaterialTeal800</item>

关于android - AppCompatActivity 不对操作栏使用 colorPrimary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29885026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com