操作栏按钮不采用背景颜色,无法更改背景窗口颜色

时间:2014-04-14 23:14:17

标签: android android-layout android-xml

我试图做我认为简单的事情,但经过两天寻找答案后,我已经放弃了。我正在编写一个应用程序,我希望用户能够通过首选项从Holo黑暗主题切换到Holo light主题。 Holo Light将是带有黑色文本的白色窗口背景,而Holo dark将是反向的。我还希望他们能够将动作栏的颜色设置为他们喜欢的样子。我遇到的问题是当我成功翻转主窗口的背景时(通过在styles.xml中使用android:background),操作栏图标和按钮不会采用操作栏的颜色。如果我在styles.xml中使用android:windowBackground,则操作栏现在看起来很好并且会改变颜色,但主窗口背景却没有。这是来自styles.xml的xml:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <!-- API 14 theme customizations can go here. -->
</style>

<style name="ThemeHoloDark" parent="android:Theme.Holo">
    <item name="android:background">@color/background_holo_dark</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:textColor">#0734f9</item>
    <!-- blue -->

</style>

<style name="ThemeHoloLight" parent="android:Theme.Holo.Light">
    <item name="android:background">@color/background_holo_light</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:textColor">#f90707</item>
</style>

我用来切换主题的代码是:

    if (themeLight == true )
        setTheme( R.style.ThemeHoloLight);
    else
        setTheme( R.style.ThemeHoloDark);
    actionBar = getActionBar();
    setActionBarTheme(this, actionBar );

以下是我所谈论的一些截图。当选择首选项时,第一对显示操作栏从亮到暗翻转: - 显然我没有足够的声望点来发布图片。 :(

我已经尝试过几乎我在网上找到的所有东西,但必须遗漏一些东西。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您需要像这样创建一个单独的自定义actionBarStyleandroid:background中的ActionBarStyle将设置操作栏的背景。

<style name="ActionBarStyle" parent="android:Widget.Holo.Light.ActionBar">
    <item name="android:titleTextStyle">@style/HoloTitleText</item>
    <item name="android:background">@color/Red</item>
</style>

并将其设置为主要自定义样式。android:background中的ThemeHoloLight将设置窗口的背景。

 <style name="ThemeHoloLight" parent="android:Theme.Holo.Light">
    <item name="android:background">@color/DarkGreen</item>
    <item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>

您也可以像这样更改操作栏标题颜色

<style name="HoloTitleText" parent="android:TextAppearance.Holo">
    <item name="android:textColor">@color/white</item>
</style>

希望这就是你要找的东西。