Android 标题周围的操作栏背景

Android actionbar background around title

Android Studio 1.1.0。 SDK 22 Installed&Compiled,SDK 17 Target(我想这不相关,因为 IDE 中的预览也会出现问题)。

我开始玩 Holo 主题操作栏样式,运行 遇到一个问题,涉及背景颜色。这是我的 styles.xml:

<resources>

    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:background">#ff0d3200</item>
        <item name="android:actionBarStyle">@style/BarTheme</item>
    </style>

    <style name="BarTheme" parent="android:Widget.Holo.ActionBar">
        <item name="android:background">#443322</item>
    </style>

</resources>

这是输出。我希望应用程序标题的背景颜色与操作栏的背景颜色相同。正如我所说,它在预览中是一样的,所以我不认为这是因为我的 phone(SDK17) 或模拟器。溢出按钮的行为方式相同,只是在本例中没有。

我尝试将 BarTheme 中的 android:titleTextStyle 设置为这种样式:

<style name="TitleTheme" parent="android:TextAppearance.Holo">
    <item name="android:background">#443322</item>
</style>

但这并没有改变任何事情。我该怎么做才能克服这个问题?

尝试,

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>




<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">value</item>
    <item name="android:titleTextStyle">@style/TitleColor</item>
</style>



<style name="TitleColor" parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">value</item>
</style>

由于 David 的意见,我自己解决了我的问题。我必须在 AppTheme 中设置 windowBackground,而不是 background。我不确定确切的区别是什么,但它可以正常工作。切记不要更改 BarTheme 中的属性,因为它不适用于 windowBackground。因此正确的 styles.xml 文件是:

<resources>

    <color name="bcColor">#ff0d3200</color>

    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:windowBackground">@color/bcColor</item>
        <item name="android:actionBarStyle">@style/BarTheme</item>
    </style>

    <style name="BarTheme" parent="android:Widget.Holo.ActionBar">
        <item name="android:background">#443322</item>
    </style>

</resources>

请注意,在这种情况下,颜色必须定义为资源,不能硬编码。干净的方法是在值文件夹中创建 colors.xml 并在那里定义所有颜色。