我正在使用setTheme更改onCreate中活动的主题(我甚至在调用super.onCreate()之前就这样做了,因为这应该更可靠)。
它确实可以改变背景和前景色。但是,我的布局有一些使用textAppearanceLarge等样式的元素。现在Android的textAppearanceLarge在内部使用textPrimaryColor - 我的主题仍未改变。
我试图覆盖主题中的主要文字颜色,但这似乎不起作用。
这是主题的关键部分:
<style name="Theme.MyApp.White">
<item name="android:background">@android:color/white</item>
<item name="android:textColor">#000000</item>
</style>
背景显示为白色,纯文本视图显示为黑色...但使用textAppearanceLarge的TextViews为白色,因此不可见(白色为白色)。
我尝试过这样的事情:
<item name="android:ColorPrimary">#000000</item>
<item name="android:textColorPrimary">#000000</item>
<item name="android:attr/textColorPrimary">#000000</item>
但这些都没有做任何事情。什么是魔术?
答案 0 :(得分:7)
作为一种解决方法,不是在布局中使用textAppearanceLarge
,(如果您使用xml来构建布局),请在styles.xml中定义您自己的textAppearanceLarge
样式,以模拟android默认一个,除了你可以将颜色更改为白色。
xml layout:
<!-- example textview -->
<TextView style="@style/large" android:text="text goes here"></TextView>
然后在styles.xml中
<style name="large">
<item name="android:textColor">@android:color/white</item>
<!-- other necessary items here like font etc.-->
</style>
答案 1 :(得分:4)
“样式”和“主题”之间的唯一区别是应用样式的范围。应用于Activity的样式称为主题。
这是关于这个主题的好文章: http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/
答案 2 :(得分:1)
原来我正在咆哮着错误的树。覆盖颜色,一切都很好。但是,通过在我的主题中定义android:background
,尽管我覆盖了所有颜色(包括textColorPrimary),但所有内容都完全搞砸了,所有文本都显示为白色。省略android:background
就可以了。