更改EditTextPreference对话框信息的颜色

4

我有一个自定义偏好设置,它继承了 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>可以用来改变这个颜色?


为什么你不在DialogBox中使用TextInputLayout? - Sumit Shukla
2个回答

3

您应该将android:textColorSecondary 应用于您的活动主题:

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

然后您将获得一个橙色的消息内容: 请注意,这会影响此活动中依赖于“textColorSecondary”属性的所有其他视图。我已经尝试使此更改仅影响特定首选项,但不幸的是,“PreferenceFragmentCompat”将忽略提供的“Context”,并使用活动的上下文,因此传递带有自定义主题的“ContextThemeWrapper”无法生效。 我想这是Google团队的有意决定,意味着此首选项屏幕内的所有属性都应该适应相同的颜色方案。

0
在你的AlertDialogStyle中添加以下项。
<item name="android:textColor">@color/colorPrimary</item>

那会改变标题(“删除账户”)、肯定按钮(“确定”)和否定按钮(“取消”)的颜色。我只想改变对话框消息的颜色(“输入‘删除’以删除您的账户”)。 - Zorgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接