2

我是 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”)并且会导致编译错误,所以这个解决方案,几乎在互联网上随处可见,根本没有解决问题。

我只是想在不丢失所有基本样式的情况下更改操作栏的背景,必须有一种简单而聪明的方法来做到这一点。

所以请帮忙,一定有一些我不考虑的愚蠢的东西。

(对不起,我的英语不好)

4

1 回答 1

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>
于 2013-09-10T17:44:42.610 回答