spo*_*b92 9 java android material-design
所以我试图改变我的DatePicker标题的颜色.尽管如此,它似乎并不那么容易.你可以在XML中这样做:
android:headerBackground="@color/myColor" />
Run Code Online (Sandbox Code Playgroud)
但是,似乎没有办法在代码中执行此操作.通常的制定者似乎并不明显(即datePicker.setHeaderBackground).
有任何想法吗?
以下是更改标题背景的方法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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我使用 Lollipop 及以上版本的 java 反射来获取标题视图。
用法:
DatePickerDialog dpd = new DatePickerDialog(this, this, 2016, 0, 11);
setDatePickerHeaderBackgroundColor(dpd, getResources().getColor(android.R.color.black));
dpd.show();
Run Code Online (Sandbox Code Playgroud)
结果我们有:
编辑:
如果您只想设置DatePicker在 xml 中创建的标题背景,忘记了 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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2524 次 |
| 最近记录: |