2017-09-05 12 views
0

ListPreferenceをスタイルするのに苦労しています。ListPreferenceのテキストの色

私はpreferenceThemeを宣言するメインテーマを適用しました。両方ともdialogTheme(およびalertDialogTheme)にリンクしています。アイテムのテキストの色は変わらないが、他のすべてのテキストの色は変わりません。 v7環境設定を使用しているため、カスタムクラスのダイアログメソッドをオーバーライドできないため、回避策に頼ることはできません。
私は行がテキストの色の値を無視するように見えますが、他の誰かがこれに対する解決策を持っている可能性があります。さもなければこれはバグかもしれませんか?

メインのスタイル:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- [...] -->   
    <!-- Some color values --> 

    <item name="android:dialogTheme">@style/DialogTheme</item> 
    <item name="android:alertDialogTheme">@style/DialogTheme</item> 
    <item name="dialogTheme">@style/DialogTheme</item> 
    <item name="alertDialogTheme">@style/DialogTheme</item> 
    <item name="preferenceTheme">@style/PreferenceTheme</item> 

</style> 


PreferenceTheme:

<style name="PreferenceTheme" parent="PreferenceThemeOverlay.v14.Material"> 
    <!-- [...] --> 
    <!-- Some color values --> 
    <item name="android:textColor">@color/preference_primary_color</item> 
    <item name="android:textColorPrimary">@color/preference_primary_color</item> 
    <item name="android:textColorSecondary">@color/preference_primary_color</item> 
    <item name="android:textColorHighlight">@color/preference_primary_color</item> 
    <item name="android:editTextColor">@color/preference_primary_color</item> 

    <item name="android:dialogTheme">@style/DialogTheme</item> 
    <item name="android:alertDialogTheme">@style/DialogTheme</item> 
    <item name="preferenceTheme">@style/PreferenceTheme</item> 
</style> 


DialogTheme:

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="android:textColor">#EEEEEE</item> 
    <item name="android:textColorPrimary">#EEEEEE</item> 
    <item name="android:textColorSecondary">#EEEEEE</item> 
    <item name="android:textColorHighlight">#EEEEEE</item> 
    <item name="android:textColorTertiary">#EEEEEE</item> 
    <item name="android:textColorAlertDialogListItem">#EEEEEE</item> 
    <item name="android:editTextColor">#EEEEEE</item> 

    <item name="color">#EEEEEE</item> 
</style> 

This is how it looks.
これは見た目です。テキストは#EEEEEEである必要があります。私はそれをカットしましたが、テキストの色はそれぞれのスタイルに適用されます。

答えて

1

のフレームワークバージョンではないため、textColorAlertDialogListItemを上書きする際には、接頭辞androidを使用しないでください。

このステートメントは、サポートウィジェット/ビューに属するほとんどすべての属性に当てはまります。その理由はかなり簡単です。すべての属性が古いプラットフォームで利用できるわけではありません。そのような例はAPI21で導入されたandroid:colorControlActivatedです.AppCompatのlibは自身のcolorControlActivatedを宣言していますので、古いAPIレベルでも利用できます。この場合、開発者は、AppCompatの代わりに属性のプラットフォームバージョンを指すように、テーマでスタイルを定義するときに接頭語「android」を使用するべきではありません。

TL;サポートウィジェットに接頭辞androidを使用しないでください(コンパイルエラーが発生しない限り)。


P.S:私はあなたがチェックアウトする場合がありますサポートの好み-V7のLIBの迷惑なものにを作成しました。

+0

あなたはポイントです。私は約2時間で非常に多くのことを試みましたが、実際にこれを考えなかったのです。説明のおかげで、 'android:'接頭辞が時々見つからない理由はわかりませんでした。 – Ch4t4r

0

また、ラジオボタンの色には、あなたのスタイルに<item name="colorAccent">#000000</item>を追加します。 注意してください、それはではないandroid:colorAccentしかし、colorAccent

関連する問題