2011-04-14 10 views
0

私はtextColor、textSize、textStyle、およびtypefaceを含むスタイルを持っています。 EditTextウィジェットに直接適用すると、テキストの色は他の属性と同様に指定されますが、アクティビティやアプリケーション全体にテーマとして適用すると、サイズは問題ありませんが色は適用されません。私は何が欠けているのですか?textColorとして使用すると適用されません

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="fap" parent="android:Theme.Holo"> 
     <item name="android:textSize">24sp</item> 
     <item name="android:textColor">#FF0000</item> 
     <item name="android:textStyle">normal</item> 
     <item name="android:typeface">normal</item> 
    </style> 
</resources> 
+0

android:textColorは、EditTextsおよびTextFields IMOにのみ適用されます。使用しているレイアウトの種類などの詳細をご記入ください。 – chaitanya

答えて

0

EditTextウィジェットはアクティビティテーマからこれらのパラメータを取得できません。アクティビティテーマのandroid:editTextStyleパラメータからデフォルトスタイルを取得します。だから、独自のスタイルを作成する必要があります。

<style name="MyEditText" parent="android:Widget.EditText"> 
    <item name="android:textSize">24sp</item> 
    <item name="android:textColor">#FF0000</item> 
    <item name="android:textStyle">normal</item> 
    <item name="android:typeface">normal</item> 
</style> 

をそして活動のテーマにEditTextスタイルとして、それを設定します。私はこのコードを試していないので、これは動作します

<style name="fap" parent="android:Theme.Holo"> 
    <item name="android:editTextStyle">@style/MyEditText</item> 
</style> 

ホープ。

1

これは非常に単純です:あなたはアンドロイドのデフォルトスタイルをオーバーライドしておらず、ただ新しいandroid:Widget.EditTextを作成しています。したがって、スタイルは適用されません。

だけ追加し、あなたのテーマの定義の中に、これを修正するには:それはデフォルトのスタイル値をロードする際

<item name="android:editTextStyle">@style/fap</item> 

を、毎回Androidのインスタンス化のEditTextが、それはあなたのfapスタイルを見つけるでしょう。

編集: アンドロイドのソースコードで検索すると非常に便利です。例えばhttps://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/attrs.xml
https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/themes.xml
https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/styles.xml
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/EditText.java
を確認してください。

関連する問題