如何更改文本视图默认颜色(Theme.AppCompat.Light.DarkActionBar)



我正在尝试了解Android的主题和样式系统,基本上尝试做最简单的事情 - 更改TextView文本的默认颜色。

根据 TextView 的源代码,默认样式为:

<item name="textViewStyle">@style/Widget.TextView</item>

看看这种风格,我发现了以下内容:

<style name="Widget.TextView">
<item name="textAppearance">?attr/textAppearanceSmall</item>
....
</style>

似乎默认的文本外观设置为文本外观小(来自主题)。

我查看主题.xml对于引用的textAppearanceSmall,发现:

<item name="textAppearanceSmall">@style/TextAppearance.Small</item>

啊哈 - 它引用了这个 TextAppearance.Small:

<style name="TextAppearance.Small">
<item name="textSize">14sp</item>
<item name="textColor">?textColorSecondary</item>
</style>

好的,我们正在到达某个地方 - 也许?默认情况下,TextView 使用颜色"textColorSecondary"。

第一个直接的问题:为什么它的引用如此奇怪?(问号,但不像"?attr/textColorSecondary")?

我回到主题.xml文件并发现这一点:

<item name="textColorSecondary">@color/secondary_text_dark</item>

在这一点上,我很确定我必须覆盖我的自定义应用程序主题中的textColorSecondary,如下所示:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorPrimary">#00CC00</item>
</style>

这当然行不通...问题是 - 为什么?

顺便说一句:我正在查看的所有文件(主题.xml和样式.xml)都驻留在我的Android SDK目录中:

C:AndroidSDKplatformsandroid-26dataresvalues

试试这个:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:textColor">@color/white</item>
</style>

相关内容

最新更新