更改 EditTextPreference 的对话框消息颜色
Change dialogMessage color of EditTextPreference
我有一个自定义偏好,它扩展了 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>
然而,无论我向 AlertDialogTheme
添加什么项目,我似乎都无法更改下面显示的 dialogMessage
颜色(白色)。
知道 <item>
我需要添加什么来更改此颜色吗?
将以下项目添加到您的 AlertDialogStyle 中。
<item name="android:textColor">@color/colorPrimary</item>
您应该将 android:textColorSecondary
应用于 activity 的主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="android:textColorSecondary">#FF5722</item>
</style>
然后你会收到一条橙色的消息内容:
请注意,这将影响此 activity 中依赖于 textColorSecondary
属性的所有其他视图。我试图使此更改仅影响特定的偏好,不幸的是 PreferenceFragmentCompat
将忽略提供的 Context
并将使用 activity 的上下文,因此传递带有自定义的 ContextThemeWrapper
主题不会生效。我想这是 Google 团队的一个有意识的决定,这意味着此首选项屏幕内的所有属性都应适应相同的配色方案。
我有一个自定义偏好,它扩展了 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>
然而,无论我向 AlertDialogTheme
添加什么项目,我似乎都无法更改下面显示的 dialogMessage
颜色(白色)。
知道 <item>
我需要添加什么来更改此颜色吗?
将以下项目添加到您的 AlertDialogStyle 中。
<item name="android:textColor">@color/colorPrimary</item>
您应该将 android:textColorSecondary
应用于 activity 的主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="android:textColorSecondary">#FF5722</item>
</style>
然后你会收到一条橙色的消息内容:
请注意,这将影响此 activity 中依赖于 textColorSecondary
属性的所有其他视图。我试图使此更改仅影响特定的偏好,不幸的是 PreferenceFragmentCompat
将忽略提供的 Context
并将使用 activity 的上下文,因此传递带有自定义的 ContextThemeWrapper
主题不会生效。我想这是 Google 团队的一个有意识的决定,这意味着此首选项屏幕内的所有属性都应适应相同的配色方案。