首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在新材料DatePicker中设置页眉颜色

在新材料DatePicker中设置页眉颜色
EN

Stack Overflow用户
提问于 2015-12-22 09:24:31
回答 4查看 3.9K关注 0票数 10

因此,我试图改变我的DatePicker标题的颜色。这似乎不像第一次那么容易。您可以在XML中这样做:

代码语言:javascript
复制
android:headerBackground="@color/myColor" />

然而,似乎没有一种方法能够在代码中做到这一点。通常的策划者似乎并不明显(即datePicker.setHeaderBackground)。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-11 10:01:31

下面是更改DatePickerDialog标题背景的方法

代码语言:javascript
复制
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反射来获取头视图。

用法:

代码语言:javascript
复制
    DatePickerDialog dpd = new DatePickerDialog(this, this, 2016, 0, 11);
    setDatePickerHeaderBackgroundColor(dpd, getResources().getColor(android.R.color.black));
    dpd.show();

因此,我们有:

编辑:

如果您只想设置用xml创建的DatePicker的头后台,而忘记了java反射,只需使用以下几行代码即可:

代码语言:javascript
复制
     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));
     }
票数 3
EN

Stack Overflow用户

发布于 2016-01-04 12:52:33

创建自定义数据报头对话框。看一次这个链接

您可以使用setAccentColor()来更改此示例中标题的颜色。像使用dpd.setAccentColor(Color.BLUE);一样使用它。如果您不希望这个颜色的按钮,只需删除'DatePickerDialog‘类下面的行。

代码语言:javascript
复制
okButton.setTextColor(mAccentColor);
cancelButton.setTextColor(mAccentColor);
票数 4
EN

Stack Overflow用户

发布于 2016-01-11 08:53:51

创建这种风格:

代码语言:javascript
复制
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
    <item name="android:headerBackground">@color/chosen_header_bg_color</item>
</style

并将此样式添加到对话框主题中:

代码语言:javascript
复制
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
    <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>

并将此对话框添加到应用程序主题中:

代码语言:javascript
复制
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
    <item name="android:headerBackground">@color/chosen_header_bg_color</item>
</style>

这里解释得很清楚:更改Android5.0的数据报警器对话框颜色

这对我确实有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34412372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档