我正在使用v7支持库,以便在API级别的10+上拥有一个ActionBar (即Android )。现在,我想要自定义外观,所以我添加了一个应用程序主题。我的values/styles.xml节选
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@drawable/bg_actionbar</item>
</style>这在使用compat的Android2.3.3上运行得很好。但是,在Android4.3上的N4 (或仿真器)上,没有应用样式。如果我将styles.xml文件更改为:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@drawable/bg_actionbar</item>
</style>(注意添加的android:前缀)它在4.3上工作,但在2.3上不工作(没有应用样式)。
有没有办法不指定每个<item>两次,一次用前缀,一次不指定?
发布于 2013-09-02 11:24:37
有没有办法不指定每个
<item>两次,一次用前缀,一次不指定?
另一种方法是创建特定于版本的res/values-XX文件夹。
由于划分是版本10和版本10+,所以可以创建包含以下内容的res/values-v10/styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@drawable/bg_actionbar</item>
</style>让版本10+处理默认的res/values/styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@drawable/bg_actionbar</item>
</style>尽管如此,它与两次指定<item></item>并没有太大的不同。
作为参考,您可以查看ActionBarSherlock的项目结构。这应该能为你提供一些指点。
您还可以查看:将样式和主题应用于UI。向下滚动到分区Select a theme based on platform version.
https://stackoverflow.com/questions/18488262
复制相似问题