我正在做一些教程,并尝试尝试使用 textColor。这可以很好地使用每个 Widget 中的属性,它是 layout xml 或 style 属性。但我想知道是否可以定义一个全局文本颜色,据我所知不是。
我在这些页面上找到了解决方案:
http://www.therealjoshua.com/2012/01/styling-android-with-defaults/
http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/
在我的小程序中,我使用了 EditText、RadioButton 和 Button。如果我使用父 @android:TextAppearance 的样式块设置每个单个小部件的 TextAppearance,小部件就会丢失其他属性。于是我搜索了style.xml和theme.xml,找到了一个很简短的解决方案:
<resources>
<style name="MyTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:editTextColor">@android:color/white</item>
<item name="android:textColorPrimaryDisableOnly">#FFFFFF</item>
<item name="android:color/primary_text_light">#FFFFFF</item>
</style>
</resources>
尽管在 theme.xml 中使用了预定义的颜色
<style name="TextAppearance.Widget.Button" parent="TextAppearance.Small.Inverse">
<item name="android:textColor">@android:color/primary_text_light_nodisable</item>
</style>
我的第一个问题:有没有办法像使用其他属性一样覆盖 @android:color/primary_text_light_nodisable 的值?
其实我想我自己解决了这个问题:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyTheme" parent="android:Theme.Light">
<item name="android:textAppearance">@style/MyTextAppearance</item>
<item name="android:textAppearanceButton">@style/MyTextAppearanceButton</item>
<item name="android:editTextStyle">@style/MyEditTextStyle</item>
<item name="android:radioButtonStyle">@style/MyRadioButtonStyle</item>
</style>
<style name="MyTextAppearance" parent="@android:style/TextAppearance">
<item name="android:textColor">@android:color/white</item>
</style>
<style name="MyTextAppearanceButton" parent="@android:style/TextAppearance.Widget.Button">
<item name="android:textColor">@android:color/white</item>
</style>
<style name="MyEditTextStyle" parent="@android:style/Widget.EditText">
<item name="android:textColor">@android:color/white</item>
</style>
<style name="MyRadioButtonStyle" parent="@android:style/Widget.CompoundButton.RadioButton">
<item name="android:textColor">@android:color/white</item>
</style>
</resources>
所以我的第二个问题是,如果这是正确的方法,还是有一种捷径可以改变全局文本的颜色?
尽管如此,我认为在 xml 中定义所有这些是最干净的方法,我想知道您是否建议通过类方法来操作它?
抱歉,我对 Java 和 Android 编程很陌生,感谢您的帮助!