Android Spinner DatePicker对话框按钮文本颜色设置方法
问题描述
我使用Spinner样式的DatePicker,父主题为Theme.AppCompat.Light.Dialog,需要设置对话框中「设置日期」(标题)、「取消」和「设置」按钮的文本颜色,当前使用的样式代码如下:
<style name="SpinnerDatePickerDialogDark" parent="Theme.AppCompat.Light.Dialog"> <item name="colorAccent">@color/white</item> <item name="android:windowBackground">@color/gray_10</item> <item name="android:textColorPrimary">@color/gray_02</item> <item name="android:textColorSecondary">@color/white</item> <!-- Divider color --> <item name="android:colorControlNormal">@color/gray_02</item> <item name="android:datePickerStyle">@style/SpinnerDatePicker</item> </style> <style name="SpinnerDatePicker" parent="android:Widget.Material.DatePicker"> <item name="android:datePickerMode">spinner</item> </style>
对话框截图:
解决方案
修改底部按钮(取消/设置)的文本颜色
底部操作按钮的颜色默认受colorAccent控制,但如果需要单独设置按钮颜色而不影响其他关联colorAccent的控件,可以在主题中添加按钮样式配置:
<style name="SpinnerDatePickerDialogDark" parent="Theme.AppCompat.Light.Dialog"> <!-- 保留原有属性 --> <item name="colorAccent">@color/white</item> <item name="android:windowBackground">@color/gray_10</item> <item name="android:textColorPrimary">@color/gray_02</item> <item name="android:textColorSecondary">@color/white</item> <item name="android:colorControlNormal">@color/gray_02</item> <item name="android:datePickerStyle">@style/SpinnerDatePicker</item> <!-- 自定义确认按钮(设置)样式 --> <item name="buttonBarPositiveButtonStyle">@style/DatePickerPositiveBtn</item> <!-- 自定义取消按钮样式 --> <item name="buttonBarNegativeButtonStyle">@style/DatePickerNegativeBtn</item> </style> <!-- 确认按钮样式 --> <style name="DatePickerPositiveBtn" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> <item name="android:textColor">@color/your_positive_color</item> </style> <!-- 取消按钮样式 --> <style name="DatePickerNegativeBtn" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> <item name="android:textColor">@color/your_negative_color</item> </style>
修改标题「设置日期」的文本颜色
标题文本颜色默认由android:textColorPrimary控制,若需单独修改标题颜色,可在主题中添加以下属性:
<style name="SpinnerDatePickerDialogDark" parent="Theme.AppCompat.Light.Dialog"> <!-- 保留原有属性 --> ... <!-- 单独设置标题颜色 --> <item name="android:textColorTitle">@color/your_title_color</item> </style>
如果部分低版本机型不生效,可替换为textColorAlertDialogTitle:
<item name="textColorAlertDialogTitle">@color/your_title_color</item>
内容的提问来源于stack exchange,提问作者Corey
相关产品推荐
相关产品推荐

