我试图做我认为简单的事情,但经过两天寻找答案后,我已经放弃了。我正在编写一个应用程序,我希望用户能够通过首选项从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 );
以下是我所谈论的一些截图。当选择首选项时,第一对显示操作栏从亮到暗翻转: - 显然我没有足够的声望点来发布图片。 :(
我已经尝试过几乎我在网上找到的所有东西,但必须遗漏一些东西。任何帮助将不胜感激!
答案 0 :(得分:0)
您需要像这样创建一个单独的自定义actionBarStyle
。 android: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>
希望这就是你要找的东西。