我是 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”)并且会导致编译错误,所以这个解决方案,几乎在互联网上随处可见,根本没有解决问题。
我只是想在不丢失所有基本样式的情况下更改操作栏的背景,必须有一种简单而聪明的方法来做到这一点。
所以请帮忙,一定有一些我不考虑的愚蠢的东西。
(对不起,我的英语不好)