如何更改主题中的textColorPrimary?

时间:2010-06-28 08:55:19

标签: android android-ui

我正在使用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>

但这些都没有做任何事情。什么是魔术?

3 个答案:

答案 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就可以了。