如何从默认的白色更改 DatePicker 对话框的背景颜色?
Posted
技术标签:
【中文标题】如何从默认的白色更改 DatePicker 对话框的背景颜色?【英文标题】:How to Change the DatePickerDialog's Background Color from default White? 【发布时间】:2018-05-30 14:45:33 【问题描述】:我正在尝试在 android 中为 DatePickerDialog
设置深色主题样式。根据Vikram's answer here,我不想在DatePickerDilog's
构造函数中设置样式。
我设置了以下样式,它已设置但不适用于纵向模式下的确定和取消按钮面板。但是,它适用于横向!:
我的 v21/styles.xml:
<style name="AppTheme.Dark.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/primaryColorDark_dark</item>
<item name="android:datePickerDialogTheme">@style/DatePicker_Theme_Dark</item>
</style>
<!--Dark DatePicker Theme & style-->
<style name="DatePicker_Theme_Dark" parent="android:Theme.Material.Light.Dialog">
<item name="android:datePickerStyle">@style/DatePicker_Dark</item>
</style>
<style name="DatePicker_Dark" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="colorAccent">@color/colorAccent_dark</item>
<item name="android:background">@color/primaryColor_dark</item>
<item name="android:headerBackground">@color/colorAccent_dark</item>
<item name="android:textColorPrimary">@color/textPrimaryColor_dark</item>
<item name="android:textColorSecondary">@color/textSecondaryColor_dark</item>
</style>
我的样式.xml:
<!-- Dark Application theme -->
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="windowActionModeOverlay">false</item>
</style>
<style name="AppTheme.Dark" parent="AppTheme.Base">
<item name="android:windowBackground">@color/backgroundColor_dark</item>
<item name="colorAccent">@color/colorAccent_dark</item>
<item name="android:textColorSecondary">@color/textSecondaryColor_dark</item>
<item name="android:textColorPrimary">@color/textPrimaryColor_dark</item>
<item name="android:datePickerStyle">@style/DatePicker_Dark</item>
</style>
<style name="DatePicker_Dark" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/colorAccent_dark</item>
<item name="android:background">@color/primaryColor_dark</item>
<item name="android:headerBackground">@color/colorAccent_dark</item>
<item name="android:textColorPrimary">@color/textPrimaryColor_dark</item>
<item name="android:textColorSecondary">@color/textSecondaryColor_dark</item>
</style>
在我的 .java 文件中,我得到了 DatePickerDialog
的新实例,如下所示:
return new DatePickerDialog(getActivity(), this, year, month, day)
@Override
public void onDateChanged(@NonNull DatePicker view, int year, int month, int dayOfMonth)
onDateSet(view, year, month, dayOfMonth);
dismiss();
;
快照:
您的帮助将不胜感激。谢谢!
【问题讨论】:
分享你的java文件。 【参考方案1】:DatePicker
颜色是父主题的选择。
<!-- Theme.AppCompat.Light is not a dialog theme -->
<style name="DialogTheme" parent="**Theme.AppCompat.Light**">
<item name="colorAccent">@color/your_color</item>
</style>
在DatePickerDialog()
中使用上述主题。
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();
编码愉快!!
【讨论】:
谢谢,但我不想在 DatePickerDialog 的构造函数中传递样式。但是,我编辑了我的问题以简要介绍我的所有风格。【参考方案2】:我发现改变按钮栏工具栏颜色的唯一方法是通过@StyleRes
AlertDialog.THEME_TRADITIONAL
AlertDialog.THEME_HOLO_DARK
AlertDialog.THEME_HOLO_LIGHT
AlertDialog.THEME_DEVICE_DEFAULT_DARK
AlertDialog.THEME_DEVICE_DEFAULT_LIGHT
在实例化 DatePickerDialog 时。此外,更改主题属性可能会接受自定义颜色,但我没有检查出来。对我来说,只需将其更改为 @color/colorPrimary 就足够了,如下例所示。希望这会有所帮助。
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), AlertDialog.THEME_DEVICE_DEFAULT_DARK, dateSetListener, year,month,day);
【讨论】:
以上是关于如何从默认的白色更改 DatePicker 对话框的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章