AppCompat - 在设置操作栏样式时出错

时间:2013-11-04 18:42:18

标签: android android-layout

我正在使用appcompat库来实现操作栏。使用自定义样式时,它会给出错误android:actionBarStyle需要API级别11(当前最小值为10)。我希望该应用程序与Android 2.3兼容。我正在使用谷歌示例代码。

themes.xml
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
       parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>

    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<!-- ActionBar styles -->
<style name="MyActionBar"
       parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@drawable/actionbar_background</item>

    <!-- Support library compatibility -->
    <item name="background">@drawable/actionbar_background</item>
</style>

1 个答案:

答案 0 :(得分:2)

AppCompat与2.3兼容,但您需要定义2个样式(如上所示):1表示本机操作栏实现(android:actionBarStyle),1表示兼容性实现(actionBarStyle)。

如果在values / styles.xml中定义这两个样式,则会出现编译错误 - 因为为所有api版本编译了values / styles.xml,而2.3不知道android:actionBarStyle。

所以你可以复制你的风格。 有一个values / styles.xml和一个值-v14 / styles.xml

在api 14及更高版本的设备上运行时,values-v14 / styles.xml中的样式将覆盖values / styles.xml中的任何样式。

或者你可以将所有样式保存在一个values / styles.xml中,但是在你得到错误的属性上,添加一个工具:targetApi =“14”到标记,告诉编译器忽略这个在非api 14设备上。

e.g。

<item name="android:actionBarStyle" tools:targetApi="14">@style/MyActionBar</item>