所以我想尝试更改DatePicker标题的颜色。尽管如此,它似乎并不容易。你可以在XML中这样做:
android:headerBackground="@color/myColor" />
然而,似乎没有办法在代码中执行此操作。通常的制定者似乎并不明显(即datePicker.setHeaderBackground
)。
有什么想法吗?
答案 0 :(得分:4)
创建自定义datepicker对话框。请参阅此link一次。
您可以使用setAccentColor()来更改此示例中标题的颜色。像dpd.setAccentColor(Color.BLUE);
一样使用它。
如果您不想将此颜色设置为按钮,只需从“DatePickerDialog”类中删除以下行。
okButton.setTextColor(mAccentColor);
cancelButton.setTextColor(mAccentColor);
答案 1 :(得分:2)
以下是更改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();
结果我们有:
修改强>
如果您只是想设置{x}中已创建的标题背景,忘记了java反射,只需使用这些行来实现它:
DatePicker
答案 2 :(得分:1)
您需要覆盖DatePickerStyle
,按照步骤
1)覆盖应用基本主题中的DatePickerDialogTheme
:
<style name="AppBaseTheme" parent="android:Theme.Material.Light">
....
<item name="android:datePickerDialogTheme">@style/CustomDatePickerDialogTheme</item>
</style>
2)定义CustomDatePickerDialogTheme
<style name="CustomDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
<item name="android:datePickerStyle">@style/CustomDatePickerStyle</item>
</style>
3)使用样式DatePickerStyle
CustomDatePickerStyle
<style name="CustomDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:headerBackground">@color/header_bg_color</item>
</style>
希望它有所帮助。
编辑:很抱歉错过了代码部分, 使用此样式创建DatePickerDialog,如下所示:
new DatePickerDialog(getActivity(),R.style.CustomDatePickerStyle, this, year, month, day);
答案 3 :(得分:1)
创建此样式:
<?php
$startDate = strtotime('2016-01-11');
$endDate = strtotime('2018-01-11');
$currentDate = $startDate;
$count = 0;
while ($currentDate <= $endDate) {
echo date('r', $currentDate) . "\n";
$currentDate = strtotime('+1 week', $currentDate);
if ($currentDate<=$endDate) {
$count++;
}
}
echo $count . "\n";
并将此样式添加到对话框主题:
<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>
这里解释得非常好:Change Datepicker dialog color for Android 5.0
这对我有用。