嗨,我想调整我的DatePickerDialog
,我只想制作蓝色文本,而不是底部的按钮(如下图所示)。
这是我创建DatePickerDialog的方式
private val birthdayDate by lazy {
Calendar.getInstance()
}
private val datePicker by lazy {
DatePickerDialog(
context,
R.style.MyDatePickerDialogTheme,
this,
birthdayDate.get(Calendar.YEAR),
birthdayDate.get(Calendar.MONTH),
birthdayDate.get(Calendar.DAY_OF_MONTH)
).also {
it.datePicker.maxDate = Calendar.getInstance().timeInMillis
}
}
然后我只调用show方法来显示对话框。我认为问题出在我的style
中,但是我找不到位置。任何帮助将不胜感激。
<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/colorPrimary</item>
</style>
答案 0 :(得分:2)
在使用MaterialDesign时,您可以使用它。
final SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
final Calendar calendar = Calendar.getInstance(parent.getResources().getConfiguration().locale);
DatePickerDialog datePickerDialog = new DatePickerDialog(parent.getContext(),
(view, year, monthOfYear, dayOfMonth) -> {
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(year, monthOfYear, dayOfMonth);
},
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
datePicker.show();
styles.xml:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="android:datePickerStyle">@style/DatePicker</item>
<item name="android:datePickerDialogTheme">@style/DatePicker</item>
</style>
<style name="DatePicker" parent="ThemeOverlay.MaterialComponents.Dialog">
<item name="colorAccent">@color/blue</item>
<item name="android:datePickerStyle">@style/DatePickerStyle</item>
</style>
<style name="DatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:headerBackground">@color/darkblue</item>
<item name="android:yearListSelectorColor">@color/darkgray</item>
<item name="android:datePickerMode">calendar</item>
<item name="android:minDate">01/01/2000</item>
</style>
此样式将导致没有轮廓框或填充框按钮。您的取消和确认按钮将以colorAccents颜色显示。
答案 1 :(得分:0)
答案 2 :(得分:0)
所以我终于找到了解决方案。我在MyDatePickerDialogTheme
中添加了额外的字段,并为DatePicker
中使用的按钮添加了额外的样式。解决方案如下:
<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:buttonBarPositiveButtonStyle">@style/DatePickerButtonStyle</item>
<item name="android:buttonBarNegativeButtonStyle">@style/DatePickerButtonStyle</item>
</style>
<style name="DatePickerButtonStyle" parent="Base.Widget.AppCompat.Button.Borderless">
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:backgroundTint">@color/white</item>
</style>
答案 3 :(得分:0)
与默认日期选择器相比,当前投票最多的答案更改了按钮的默认 minHeight
和 minWidth
。
为了解决这个问题,我必须在自定义样式中指定这些属性。
我能够找到 minWidth
的标准属性,但默认 minHeight
在运行时具有 54dp
值,我无法在标准 Android 值中的任何地方找到该值。
本示例直接使用 Material 主题。
<style name="Theme.AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
.....
<item name="android:datePickerDialogTheme">@style/DatePickerDialogTheme</item>
</style>
<style name="DatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
<item name="android:colorAccent">@color/colorPrimary<item>
<item name="android:buttonBarPositiveButtonStyle">@style/DatePickerButtonStyle</item>
<item name="android:buttonBarNegativeButtonStyle">@style/DatePickerButtonStyle</item>
</style>
<style name="DatePickerButtonStyle" parent="android:Widget.Material.Button.Borderless">
<item name="android:minHeight">54dp</item>
<item name="android:minWidth">@dimen/mtrl_btn_dialog_btn_min_width</item>
<item name="android:textColor">@color/colorPrimary</item>
</style>