【问题标题】:Android actionbar style ignored by later devices, using appcompat v7Android 动作栏样式被后来的设备忽略,使用 appcompat v7
【发布时间】:2014-11-07 21:04:42
【问题描述】:

我正在使用 Action Bar 支持库 (appcompat v7),我的应用设置为 7 的最低 api,以及 21 的目标。

我有两个样式文件,一个是基础样式文件,一个是针对设备 api 11+ 的样式文件。

在运行 KitKat 的设备上运行应用程序时,android:actionBarStyle 似乎被忽略,将操作栏保留为默认样式 (@style/Widget.AppCompat.ActionBar.Solid),而不是应用给定的背景。

但如果我删除我的 v11 样式/将它们注释掉,KitKat 会侦听基本 styles.xml 文件中设置的 actionBarStyle 属性并设置我的自定义背景而不会出现任何问题。

所以我的问题是,我在 v11 样式上哪里出了问题?

据我了解,根据 android 文档,您应该使用 android: 前缀为运行 11+ 的设备提供其他样式,但这似乎对我不起作用。

精简,这是我的/res/values/styles.xml 文件:

<style name="My.Theme" parent="@style/Theme.AppCompat">
    <item name="actionBarStyle">@style/ActionBar.Solid</item>
</style>

<style name="ActionBar.Solid" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="background">@drawable/ab_solid_</item>
</style>

这是我的/res/values-v11/styles.xml 文件:

<style name="My.Theme" parent="@style/Theme.AppCompat">
    <item name="android:actionBarStyle">@style/ActionBar.Solid</item>
</style>

<style name="ActionBar.Solid" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="android:background">@drawable/ab_solid_</item>
</style>

如您所见,两者之间的唯一区别是使用了android: 前缀。

【问题讨论】:

    标签: android xml android-styles android-appcompat


    【解决方案1】:

    According to the official doc,使用new AppCompat-v21,您可以删除所有values-v14+ Action Bar 样式并仅使用一个主题声明,在values

    <style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
        <!-- Set AppCompat’s actionBarStyle -->
        <item name="actionBarStyle">@style/MyActionBarStyle</item>
    </style>
    

    【讨论】:

    • 感谢您的提示!很高兴知道我们不再需要 android: 前缀。
    猜你喜欢
    • 2015-12-21
    • 1970-01-01
    • 2015-05-30
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多