在一个主题中定义多个文本颜色

时间:2014-01-13 14:14:47

标签: java android

目前我正在尝试在我的应用程序中定义白天模式的主题和夜间模式的另一个主题。 我已经可以在这两者之间进行更改,问题是我的textViews有白色文字颜色,有些则有黑色文字颜色。所以我想知道是否有办法:

  • 在一个主题中定义多个textColors;

  • 定义更改样式的主题,例如
// defined in the layout
<TextView style="@style/whiteStyleText" />
<TextView style="@style/blackStyleText" />

// defined in the styles
<style name="Theme.DayTheme" parent="@style/Theme.ActivityTheme">
    <item name="@style/whiteStyleText">@color/white</item>
    <item name="@style/blackStyleText">@color/black</item>
</style>

<style name="Theme.NightTheme" parent="@style/Theme.ActivityTheme">
    <item name="@style/whiteStyleText">@color/light_red</item>
    <item name="@style/blackStyleText">@color/red</item>
</style>

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

这可能对你有所帮助。不是100%肯定你想要的。

在一个地方定义所有颜色。这是res&gt; values&gt; styles.xml

<resources>
<style name="AppBaseTheme" parent="android:Theme.Light">
</style>

<style name="AppTheme" parent="AppBaseTheme">
</style>

<color name="blueDefault">#2782AF</color>
<color name="blueBGDark">#226A87</color>
<color name="blueDark">#257493</color>
<color name="blueLight">#297F99</color>
<color name="greyDefault">#3F4144</color>

</resources>

答案 1 :(得分:0)

我没有找到关于在同一主题中定义的多个textColors的任何内容。

我已经完成的一个解决方案,为dayTheme设置了默认的textColor,为nightTheme设置了另一个。 对于不使用该默认颜色的所有其他textView,我已在布局中定义它,并在活动开始时检查所选内容,白天或夜晚模式,并使用正确的布局调用setContentView。

另一个解决方案将声明一个自定义属性,例如textColorNight,并创建一个自定义textView,它将使用此属性然后检查当前选择的模式,因此它可以决定textColor(白天模式)或textColorNight(夜间模式)是否应用于它的文本。 我的第二个解决方案是更精致的解决方案,但由于时间不够,我没有实现它。但是下次我需要实现日/夜模式时,我会这样做。