Android将textColor值设置为Global

时间:2012-08-21 14:34:54

标签: android styles textcolor

我正在做一些教程,我试图抓住textColor。这可以使用每个Widget中的属性,布局xml或样式属性。但我想知道是否有可能定义一个全局textColor,据我所知它不是。

我在这些页面上找到了解决方案:

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>

所以我的第二个问题是,如果这是正确的方法,还是有一个简短的方法来改变全球文本的颜色?

Althoug我认为在xml中定义所有这些是最干净的方法,我想知道你是否建议通过类方法来操作它?

抱歉,我对Java和Android编程很陌生,感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你可以在res / values下创建一个colors.xml,并从这里声明你的全局颜色。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="scheme">#007BB3</color>

    <color name="blue">#0000FF</color>
    <color name="white">#FFFFFF</color>
    <color name="grey">#C1C1C1</color>  
</resources>