10

我正在使用 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 的文本视图是白色的,因此不可见(白底白字)。

我试过这样的事情:

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

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

4

3 回答 3

7

作为一种解决方法,不要textAppearanceLarge在布局中使用(如果您使用 xml 来构建布局),而是textAppearanceLarge在 styles.xml 中定义您自己的样式,该样式模拟 android 默认样式,但您可以将颜色更改为白色。

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>
于 2010-10-18T19:04:34.620 回答
4

“样式”和“主题”之间的唯一区别是样式应用的范围。应用于 Activity 的样式称为 Theme。

这是关于该主题的一篇很好的文章:http: //brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/

于 2011-02-10T00:28:39.993 回答
1

原来我叫错了树。覆盖颜色,一切正常。然而,通过android:background在我的主题中定义,一切都完全搞砸了,所有文本都显示为白色,尽管我覆盖了所有颜色(包括 textColorPrimary)。省略android:background成功了。

于 2010-10-19T06:39:00.183 回答