2017-09-05 144 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前綴,因爲這不是AlertDialog的框架版本。

對於幾乎所有屬於支持小部件/視圖的屬性,此聲明通常都是正確的。原因很簡單:並不是所有的屬性都可以在舊版平臺上使用。這個例子是在API 21中引入的android:colorControlActivated。AppCompat lib聲明瞭它自己的colorControlActivated,所以它也可以在較舊的API級別上使用。在這種情況下,在定義主題中的樣式時,開發人員不應使用android前綴,因爲它會指向屬性的平臺版本,而不是AppCompat的版本。

TL; DR:除非必須(即會出現編譯錯誤),否則不要使用android前綴作爲支持小部件。


P.S:我創建了一個到支持的喜好-V7 LIB的煩人,你可能要退房的事情。

+0

你是在說。我在大約2個小時內嘗試了很多東西,但沒有真正想到這一點。感謝您的解釋,我不知道爲什麼'android:'前綴有時會丟失。 – Ch4t4r

0

也爲單選按鈕顏色添加<item name="colorAccent">#000000</item>您的風格。 要小心,這不是android:colorAccent,而是colorAccent