2013-11-04 31 views
1

使用appcompat库来实现操作栏。虽然使用自定义样式,但它给出了一个错误android:actionBarStyle需要API等级11(当前最小值为10)。我想要的应用程序与Android 2.3兼容。我使用谷歌示例代码。AppCompat - 样式化操作栏时出错

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

的可能的复制[机器人:actionBarStyle需要API级11](http://stackoverflow.com/questions/15339150/androidactionbarstyle-requires-api-level-11) – blahdiblah

回答

2

程序兼容性与2.3兼容,但您需要定义2种样式(如你有以上):1的原生动作条执行(安卓actionBarStyle),一个用于兼容的实现(actionBarStyle )。

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

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

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

或者您可以将所有样式保留在一个values/styles.xml中,但是在出现错误的属性上,向标签添加tools:targetApi =“14”,这会告知编译器忽略这在非api 14设备上。

例如

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