2010-06-28 40 views
7

我使用setTheme改变了onCreate中的活动主题(即使在调用super.onCreate()之前我也这么做了,因为这应该是更可靠的)。如何更改主题中的textColorPrimary?

它的确可以改变背景和前景色。不过,我的布局有几个使用textAppearanceLarge等风格的元素。现在Android的textAppearanceLarge内部使用textPrimaryColor - 这仍然是我的主题。

我试图覆盖主题中的主要文本颜色,但似乎并不奏效。

这里是主题的重要组成部分:

<style name="Theme.MyApp.White"> 
    <item name="android:background">@android:color/white</item> 
    <item name="android:textColor">#000000</item> 
</style> 

背景显示为白色,纯TextViews出现黑屏......但使用textAppearanceLarge TextViews是白色的,这样无形的(白色白色)。

我试过这样的事情:

<item name="android:ColorPrimary">#000000</item> 
    <item name="android:textColorPrimary">#000000</item> 
    <item name="android:attr/textColorPrimary">#000000</item> 

但这些都不做任何事情。什么是魔术技巧?

回答

1

原来我找错了树。覆盖颜色和一切工作得很好。但是,通过在我的主题中定义android:background,尽管我覆盖了所有颜色(包括textColorPrimary),但所有内容都完全混乱,并且所有文本都显示为白色。省略android:background诀窍。

+0

啊。很高兴为你解决问题! ;) – zsniperx 2010-10-20 18:37:27

+0

我仍然感谢你的回答(尽管你更多地谈论风格,但我正在考虑主题)。我慢慢地开始获得它,尽管它仍然有点不稳定。 – EboMike 2010-10-20 19:01:56

6

只是作为一种解决方法,而不是在布局使用textAppearanceLarge,(如果你使用XML来构建布局)的,定义模仿了Android默认的,除非你可以改变styles.xml自己textAppearanceLarge风格颜色变白。

XML布局:

<!-- 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> 
+0

感谢狙击!详细说明:我试图将主题添加到我可以切换的应用程序中,所以基本上每个主题都有一个样式来定义整个外观 - 如果用户选择“白色”主题,则所有内容都将为黑色白色等。我不知道如果我有一个单独的“大”风格,我会如何设置。 – EboMike 2010-10-19 04:18:10

+0

你的答案工作,但它不是正确的方式来创建Android主题,我也期待解决方案,但前进的方法是编辑内置的Android颜色属性,以便于颜色自定义。 – jjalonso 2013-09-01 14:26:54