【发布时间】:2012-02-12 17:58:14
【问题描述】:
我正在编写一个需要以下两件事的应用程序:
- 一般文本(
TextViews)必须是一种颜色(白色,在本例中为深色背景) -
Spinner上的文本需要是不同的颜色(黑色,因为白色太难读)
我使用了一个主题,在清单中的应用程序级别应用,来执行上面的第一项。
<resources>
<style name="GlobalTheme" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<item name="android:textColor">#FFFFFF</item>
</style>
</resources>
工作得很好。除了它还会使微调器上的文本变白,难以阅读。
好的,所以我希望 spinner 颜色仍然是黑色,但所有 else 都是白色的。
我找到了this question,它展示了如何设置 Spinner 文本颜色,并且它可以工作,但前提是我没有同时设置全局 textColor。
所以以下方法不起作用:
<resources>
<style name="GlobalTheme" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<item name="android:textColor">#FFFFFF</item>
<item name="android:spinnerItemStyle">@style/GlobalThemeSpinnerItem</item>
</style>
<style name="GlobalThemeSpinnerItem" parent="android:Widget.TextView.SpinnerItem">
<item name="android:textAppearance">@style/GlobalThemeTextAppearanceSpinnerItem</item>
</style>
<style name="GlobalThemeTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem">
<item name="android:textColor">#000000</item>
</style>
</resources>
我想我希望这会像 CSS 一样,并且事情会级联下来(即,“所有文本都应该是白色的,除了在微调器中的文本”)。如果我删除主题中的android:textColor 行,微调器颜色技巧就可以正常工作。
看起来SpinnerItem 派生自TextView,所以我尝试提出类似于spinnerItemStyle 分隔的textViewStyle 类型分隔,但没有任何运气。
与大多数询问此问题的人不同,我希望尽可能将其保留在 XML 中。有谁知道我做错了什么?
【问题讨论】:
-
为什么不能使用 parent="android:Widget.TextView" 作为一种颜色,而使用 parent="android:Widget.TextView.SpinnerItem" 作为另一种颜色?
标签: android styles themes textview spinner