Изменить цвет диалогаMessage для EditTextPreference - PullRequest
2 голосов
/ 16 июня 2019

У меня есть пользовательское предпочтение, которое расширяет EditTextPreference:

class DeleteAccountPreference(context: Context, attrs: AttributeSet) : EditTextPreference(context, attrs) {
    ...
}  

preferences.xml

<my.app.DeleteAccountPreference
    android:layout="@layout/preference_click"
    android:key="delete_account"
    android:title="Delete Account"
    android:dialogMessage="@string/delete_account_message" />

К которой я применил собственную тему:

styles.xml

<style name="BaseTheme" parent="Theme.AppCompat.NoActionBar">
    ...        
    <item name="alertDialogTheme">@style/AlertDialogTheme</item>
</style>

<style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:background">@color/colorIcons</item>
    <item name="colorPrimary">@color/colorLightBlack</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="colorPrimaryDark">@color/colorExit</item>
    <item name="editTextColor">@color/colorAccent</item>
    <item name="android:textColorHint">#000000</item>
    <item name="android:windowBackground">@color/colorPrimary</item>
</style>

image

Однако независимо от того, какой элемент я добавляю к AlertDialogTheme, я не могу изменить цвет dialogMessage (белый), показанный ниже.

Есть идеи, что <item> мне нужно добавить, чтобы изменить этот цвет?

image

Ответы [ 2 ]

1 голос
/ 21 июля 2019

Вы должны применить android:textColorSecondary к теме вашей деятельности:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="android:textColorSecondary">#FF5722</item>
</style>

Тогда вы получите оранжевое сообщение:

Обратите внимание, что это повлияет на все остальные представления в этом упражнении, в которых используется атрибут textColorSecondary.Я пытался, чтобы это изменение влияло только на конкретные предпочтения, к сожалению, PreferenceFragmentCompat будет игнорировать предоставленную Context и будет использовать контекст действия, следовательно, передача ContextThemeWrapper с пользовательской темой не будет действовать.Я думаю, это сознательное решение от команды Google, означающее, что все атрибуты на этом экране предпочтений должны адаптироваться к одной цветовой схеме.

0 голосов
/ 17 июня 2019

Добавьте следующий элемент в свой AlertDialogStyle.

<item name="android:textColor">@color/colorPrimary</item>
...