4

私はいくつかのチュートリアルを行っており、textColor を変更しようとしました。これは、レイアウト 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>

私の2番目の質問は、これが正しい方法なのか、それともテキストの色をグローバルに変更する簡単な方法があるのか​​ということです.

これをすべてxmlで定義するのが最もクリーンな方法だと思いますが、クラスメソッドを介してこれを操作することを提案しているかどうか知りたいですか?

申し訳ありませんが、私は Java と Android プログラミングにかなり慣れていないので、助けてくれてありがとう!

4

1 に答える 1

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>
于 2012-08-21T14:37:47.623 に答える