如何更改Android 5.0的日期选择器对话框颜色
是否可以更改android 5.0的日期选择器(以及时间选择器)颜色方案 我尝试过设置重音颜色,但这不起作用(无论是否使用如何更改Android 5.0的日期选择器对话框颜色,android,dialog,styles,background-color,Android,Dialog,Styles,Background Color,是否可以更改android 5.0的日期选择器(以及时间选择器)颜色方案 我尝试过设置重音颜色,但这不起作用(无论是否使用android:): @颜色/紫色 @颜色/紫色 @颜色/紫色 原文: 对这样的事情: 试试这个 代码 您的Style.xml文件中的样式 编辑-根据建议将主题更改为theme.AppCompat.Light.Dialog <style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
android:
):
@颜色/紫色
@颜色/紫色
@颜色/紫色
原文:
对这样的事情:
试试这个
代码
您的Style.xml文件中的样式
编辑-根据建议将主题更改为theme.AppCompat.Light.Dialog
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/blue_500</item>
</style>
@颜色/蓝色500
尼尔的建议导致全屏日期选择器的原因是选择了父主题:
<!-- Theme.AppCompat.Light is not a dialog theme -->
<style name="DialogTheme" parent="**Theme.AppCompat.Light**">
<item name="colorAccent">@color/blue_500</item>
</style>
在我看来,这是不好的。人们应该尽量避免使用java和styles.xml/themes.xml中的样式
我同意Neil的建议,稍加修改(将父主题改为,theme.Material.Light.Dialog
)将得到您想要的结果。但是,另一种方式是:
第一次检查时,我们遇到了datePickerStyle
,它定义了如下内容:headerBackground
(您试图更改的内容)、dayOfWeekBackground
,以及一些其他文本颜色和文本样式
在应用程序的主题中覆盖此属性将不起作用DatePickerDialog
使用可由属性datePickerDialogTheme
分配的单独主题。因此,为了使我们的更改生效,我们必须在被覆盖的datePickerDialogTheme
中覆盖datePickerStyle
我们开始:
在应用程序的基本主题中覆盖datePickerDialogTheme
:
<style name="AppBaseTheme" parent="android:Theme.Material.Light">
....
<item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
</style>
我们已经用样式MyDatePickerStyle
覆盖了datePickerStyle
。家长的选择将再次取决于应用程序的基本主题:Widget.Material.DatePicker
或Widget.Material.Light.DatePicker。根据您的要求进行定义:
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:headerBackground">@color/chosen_header_bg_color</item>
</style>
如果您不需要这么多的控制(自定义),则不需要重写datePickerStyle
colorAccent
控制大部分DatePicker的
颜色。因此,仅在MyDatePickerDialogTheme
内部覆盖colorAccent
应该可以工作:
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
<item name="android:colorAccent">@color/date_picker_accent</item>
<!-- No need to override 'datePickerStyle' -->
<!-- <item name="android:datePickerStyle">@style/MyDatePickerStyle</item> -->
</style>
只需提及,您还可以使用默认的主题,如android.R.style.theme\u DeviceDefault\u Light\u对话框
new DatePickerDialog(MainActivity.this, android.R.style.Theme_DeviceDefault_Light_Dialog, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
//DO SOMETHING
}
}, 2015, 02, 26).show();
您没有创建主题,只需将其写入对话框创建对象中即可
DatePickerDialog datePicker = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_LIGHT,this, mYear, mMonth, mDay);
按照此操作,它将为您提供所有类型的日期选择器样式
这真的很有效
试试这个,为我工作
放置两个选项,colorAccent
和android:colorAccent
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
....
<item name="android:dialogTheme">@style/AppTheme.DialogTheme</item>
<item name="android:datePickerDialogTheme">@style/Dialog.Theme</item>
</style>
<style name="AppTheme.DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<!-- Put the two options, colorAccent and android:colorAccent. -->
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:colorPrimary">@color/colorPrimary</item>
<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:colorAccent">@color/colorPrimary</item>
</style>
....
@style/AppTheme.DialogTheme
@style/Dialog.Theme
@颜色/原色
@颜色/原色
@颜色/原色暗
@颜色/原色
我遇到了一个问题,android中API 24的屏幕上没有显示时间选择器按钮。(API 21+)
这是由
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
<item name="android:colorAccent">@color/colorPrimary2</item></style>
<style name="Theme" parent="BBaseTheme">
<item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
</style>
@颜色/原色2
@样式/MyDatePickerDialogTheme
@颜色/选择2
@颜色/选择2
@样式/MyDatePickerStyle
@颜色/选择2
用于更改年度列表项目文本颜色(特定于ANDROID 5.0)
只需在日期选择器对话框样式中设置某些文本颜色。由于某些原因,设置标志yearListItemTextAppearance
不会反映年度列表上的任何更改
<item name="android:textColor">@android:color/black</item>
@android:color/black
创建新样式
<!-- Theme.AppCompat.Light.Dialog -->
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/blue_500</item>
</style>
结果:
科特林,2021年
// set date as button text if pressed
btnDate.setOnClickListener(View.OnClickListener {
val dpd = DatePickerDialog(
this,
{ view, year, monthOfYear, dayOfMonth ->
val selectDate = Calendar.getInstance()
selectDate.set(Calendar.YEAR, year)
selectDate.set(Calendar.MONTH, monthOfYear)
selectDate.set(Calendar.DAY_OF_MONTH, dayOfMonth)
var formatDate = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
val date = formatDate.format(selectDate.time)
Toast.makeText(this, date, Toast.LENGTH_SHORT).show()
btnDate.text = date
}, 1990, 6, 6
)
val calendar = Calendar.getInstance()
val year = calendar[Calendar.YEAR]
val month = calendar[Calendar.MONTH]
val day = calendar[Calendar.DAY_OF_MONTH]
dpd.datePicker.minDate = GregorianCalendar(year - 90, month, day, 0, 0).timeInMillis
dpd.datePicker.maxDate = GregorianCalendar(year - 10, month, day, 0, 0).timeInMillis
dpd.show()
})
Styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- This is main Theme Style for your application! -->
<item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
</style>
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Dialog">
<item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.DatePicker">
<item name="android:headerBackground">#A500FF</item>
</style>
@样式/MyDatePickerDialogTheme
@样式/MyDatePickerStyle
#A500FF
是的,它是紫色的,但也是全屏的:)但如果我把它放在一个片段中,它可能会被包含。在我再次开始玩它之前,有什么建议吗?我会看看是否能找到一个更合适的解决方案,不会让它全屏显示。只需使用
parent=“Theme.AppCompat.Light.Dialog”
而不是parent=“Theme.AppCompat.Light”
@Neil谢谢你的回答,为我指出了正确的方向,这是最快的解决方案,但我正在寻找一种全风格/主题的方法:)不适用于android 6,它是全屏的,颜色不变。在应用程序主题中,您的颜色重音设置为什么颜色styles@Neil我已经添加了到目前为止我尝试用于样式设计的代码。感谢您对它的工作原理以及如何在styles@Vikram找不到calendarSelectedTextColor。是否可以向后是否兼容android<21日期选择器?@RoCk不确定你的意思,但我构建了一个库,将日期和时间选择器从android版本23向后移植到版本14。该项目位于:。非常好的答案!我只是想补充一点,我发现,android:colorAccent
显然没有覆盖选择圈的颜色,但是纯colorAccent
将覆盖选择颜色和“确定”/“取消”按钮文本。(或者您可以同时使用这两种颜色!)这是AndroidX Material 1.1.0库的一部分,可能会随DatePicker的不同版本而有所不同!AlertDialog.THEME\u HOLO\u灯光已弃用。。不工作此答案不需要v24 API及以上版本
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
....
<item name="android:dialogTheme">@style/AppTheme.DialogTheme</item>
<item name="android:datePickerDialogTheme">@style/Dialog.Theme</item>
</style>
<style name="AppTheme.DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<!-- Put the two options, colorAccent and android:colorAccent. -->
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:colorPrimary">@color/colorPrimary</item>
<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:colorAccent">@color/colorPrimary</item>
</style>
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
<item name="android:colorAccent">@color/colorPrimary2</item></style>
<style name="Theme" parent="BBaseTheme">
<item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
</style>
<style name="AppThemeDatePicker" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/select2</item>
<item name="android:colorAccent">@color/select2</item>
<item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:headerBackground">@color/select2</item>
</style>
<item name="android:textColor">@android:color/black</item>
<!-- Theme.AppCompat.Light.Dialog -->
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/blue_500</item>
</style>
DatePickerDialog = new DatePickerDialog(context,R.style.DialogTheme,this,now.get(Calendar.YEAR),now.get(Calendar.MONTH),now.get(Calendar.DAY_OF_MONTH);
// set date as button text if pressed
btnDate.setOnClickListener(View.OnClickListener {
val dpd = DatePickerDialog(
this,
{ view, year, monthOfYear, dayOfMonth ->
val selectDate = Calendar.getInstance()
selectDate.set(Calendar.YEAR, year)
selectDate.set(Calendar.MONTH, monthOfYear)
selectDate.set(Calendar.DAY_OF_MONTH, dayOfMonth)
var formatDate = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
val date = formatDate.format(selectDate.time)
Toast.makeText(this, date, Toast.LENGTH_SHORT).show()
btnDate.text = date
}, 1990, 6, 6
)
val calendar = Calendar.getInstance()
val year = calendar[Calendar.YEAR]
val month = calendar[Calendar.MONTH]
val day = calendar[Calendar.DAY_OF_MONTH]
dpd.datePicker.minDate = GregorianCalendar(year - 90, month, day, 0, 0).timeInMillis
dpd.datePicker.maxDate = GregorianCalendar(year - 10, month, day, 0, 0).timeInMillis
dpd.show()
})
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- This is main Theme Style for your application! -->
<item name="android:datePickerDialogTheme">@style/MyDatePickerDialogTheme</item>
</style>
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Dialog">
<item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.DatePicker">
<item name="android:headerBackground">#A500FF</item>
</style>