因此,我试图改变我的DatePicker标题的颜色。这似乎不像第一次那么容易。您可以在XML中这样做:
android:headerBackground="@color/myColor" />然而,似乎没有一种方法能够在代码中做到这一点。通常的策划者似乎并不明显(即datePicker.setHeaderBackground)。
有什么想法吗?
发布于 2016-01-11 10:01:31
下面是更改DatePickerDialog标题背景的方法
private void setDatePickerHeaderBackgroundColor(DatePickerDialog dpd, int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
try {
Field mDatePickerField;
mDatePickerField = DatePickerDialog.class.getDeclaredField("mDatePicker");
mDatePickerField.setAccessible(true);
final DatePicker mDatePicker = (DatePicker) mDatePickerField.get(dpd);
int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android");
final View header = mDatePicker.findViewById(headerId);
header.setBackgroundColor(color);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}如您所见,我正在为Lollipop和更高版本使用java反射来获取头视图。
用法:
DatePickerDialog dpd = new DatePickerDialog(this, this, 2016, 0, 11);
setDatePickerHeaderBackgroundColor(dpd, getResources().getColor(android.R.color.black));
dpd.show();因此,我们有:

编辑:
如果您只想设置用xml创建的DatePicker的头后台,而忘记了java反射,只需使用以下几行代码即可:
DatePicker mDatePicker = (DatePicker) findViewById(R.id.date_picker);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android");
final View header = mDatePicker.findViewById(headerId);
header.setBackgroundColor(getResources().getColor(android.R.color.black));
}发布于 2016-01-04 12:52:33
创建自定义数据报头对话框。看一次这个链接。
您可以使用setAccentColor()来更改此示例中标题的颜色。像使用dpd.setAccentColor(Color.BLUE);一样使用它。如果您不希望这个颜色的按钮,只需删除'DatePickerDialog‘类下面的行。
okButton.setTextColor(mAccentColor);
cancelButton.setTextColor(mAccentColor);发布于 2016-01-11 08:53:51
创建这种风格:
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:headerBackground">@color/chosen_header_bg_color</item>
</style并将此样式添加到对话框主题中:
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
<item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>并将此对话框添加到应用程序主题中:
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:headerBackground">@color/chosen_header_bg_color</item>
</style>这里解释得很清楚:更改Android5.0的数据报警器对话框颜色
这对我确实有用。
https://stackoverflow.com/questions/34412372
复制相似问题