我是Android开发的新手,但我发现很难理解如何使用“res / values / styles.xml”中的XML来设置我的应用程序样式。
在所有教程中,我发现您似乎可以通过在标记中声明“父”字段来继承大部分样式,然后更改您需要的内容。
然而,以这种方式继承的大多数样式都是非公开的,并且最近对样式化Android应用程序的限制使得非公共样式的继承几乎不可能。
我说“差不多”因为我发现解决方案涉及android SDK中“Styles.xml”的大量复制粘贴。 一个明确的例子,在StackOverflow上找到:
http://android-argentina.blogspot.it/2011/08/error-retrieving-parent-for-item.html
应用这些解决方案,我的简单xml:
<style name="MyActionBar" parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">#FF0000</item>
</style>
成为:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar">
<!--copied from Widget.Holo.Light.ActionBar.Solid.Inverse -->
<item name="android:titleTextStyle">
@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse
</item>
<item name="android:subtitleTextStyle">
@android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle.Inverse
</item>
<item name="android:background">@android:drawable/ab_solid_dark_holo</item>
<item name="android:backgroundStacked">@android:drawable/ab_stacked_solid_dark_holo</item>
<item name="android:backgroundSplit">@android:drawable/ab_bottom_solid_inverse_holo</item>
<item name="android:divider">@android:drawable/list_divider_holo_dark</item>
<item name="android:progressBarStyle">@android:style/Widget.Holo.ProgressBar.Horizontal</item>
<item name="android:indeterminateProgressStyle">@android:style/Widget.Holo.ProgressBar</item>
<item name="android:progressBarPadding">32dip</item>
<item name="android:itemPadding">8dip</item>
<!-- custom items -->
<item name="android:background">#FF0000</item>
</style>
此时的资源如“@android:drawable / ab_bottom_solid_inverse_holo”不公开,其他人不能喜欢这个项目(是的,即使它们是“@android:drawable / SOMETHING”)也会导致编译错误,所以这个解决方案几乎无处不在互联网上,但根本无法解决问题。
我只是想在不失去所有基本风格的情况下改变动作栏的背景,必须有一种简单明智的方法。
所以,请帮助,必须有一些我不考虑的愚蠢。
(抱歉我的英语不好)
答案 0 :(得分:2)
试试这个:
<style name="YourCustomTheme" parent="android:Theme.Holo.Light">
<item name="android:actionBarStyle">@style/Widget.Holo.ActionBar.XYZ</item>
</style>
<style name="Widget.Holo.ActionBar.XYZ" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@color/aw_blue</item>
</style>