作者:手机用户2502906317 | 来源:互联网 | 2023-09-03 12:03
是否可以更改android 5.0的datepicker(以及timepicker)配色方案?
我尝试设置强调颜色,但这不起作用(有和没有android :):
- @color/purple
- @color/purple_tint
- @color/purple_tint
来自原文:
对于这样的事情:
解决方法:
Neil的建议导致全屏DatePicker的原因是父主题的选择:
此外,如果你走这条路线,你必须在创建DatePickerDialog时指定主题:
// R.style.DialogTheme
new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
//DO SOMETHING
}
}, 2015, 02, 26).show();
在我看来,这并不好.应该尝试将样式保留在java和styles.xml / themes.xml中.
我同意Neil的建议,稍微改变(改变父主题,比如说Theme.Material.Light.Dialog)会得到你想要的结果.但是,这是另一种方式:
在第一次检查时,我们遇到了datePickerStyle,它定义了诸如:headerBackground(你想要改变什么),dayOfWeekBackground以及一些其他文本颜色和文本样式的东西.
在您的应用主题中覆盖此属性将不起作用. DatePickerDialog使用由属性datePickerDialogTheme分配的单独主题.因此,为了使我们的更改生效,我们必须在重写的datePickerDialogTheme中覆盖datePickerStyle.
开始了:
在应用的基本主题中覆盖datePickerDialogTheme:
定义MyDatePickerDialogTheme.父主题的选择将取决于您的应用程序的基本主题:它可以是Theme.Material.Dialog或Theme.Material.Light.Dialog:
我们使用样式MyDatePickerStyle重写了datePickerStyle.父母的选择将再次取决于您的应用程序的基本主题:Widget.Material.DatePicker或Widget.Material.Light.DatePicker.根据您的要求定义它:
目前,我们只重写headerBackground,默认设置为?attr / colorAccent(这也是Neil建议在更改背景时的原因).但是有很多可能的定制:
dayOfWeekBackground
dayOfWeekTextAppearance
headerMonthTextAppearance
headerDayOfMonthTextAppearance
headerYearTextAppearance
headerSelectedTextColor
yearListItemTextAppearance
yearListSelectorColor
calendarTextColor
calendarSelectedTextColor
如果您不想要这么多控件(自定义),则不需要覆盖datePickerStyle. colorAccent控制大多数DatePicker的颜色.因此,覆盖myDatePickerDialogTheme中的colorAccent应该可以正常工作:
覆盖colorAccent为您提供更改OK& amp;取消文本颜色.不错.
这样您就不必向DatePickerDialog的构造函数提供任何样式信息.一切都正确连线:
DatePickerDialog dpd = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
}, 2015, 5, 22);
dpd.show();