我正在使用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>
答案 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>