2017-09-05 1 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

프레임 워크 버전 AlertDialog이 아니기 때문에 textColorAlertDialogListItem을 재정의 할 때 android 접두어를 사용하지 마십시오.

이 명령문은 일반적으로 지원 위젯/뷰에 속하는 거의 모든 속성에 적용됩니다. 그 이유는 이전 버전의 플랫폼에서는 모든 속성을 사용할 수있는 것은 아닙니다. API 21에서 소개 된 예제는 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