Material DatePicker 禁用年份选项
Posted
技术标签:
【中文标题】Material DatePicker 禁用年份选项【英文标题】:Material DatePicker Disable year option 【发布时间】:2022-01-16 10:54:10 【问题描述】:我有以下代码:
private void openDatePicker()
MaterialDatePicker picker =
MaterialDatePicker.Builder.datePicker()
.setTitleText("Select date")
.setTheme(R.style.DatePickerTheme)
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
.build();
picker.show(getParentFragmentManager(),"tag");
picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener()
@Override
public void onPositiveButtonClick(Object selection)
try
mtnRecDate.setText(sdf.format(selection));
catch (Exception e)
FancyToast.makeText(getContext(),"Setting Date failed!",FancyToast.LENGTH_LONG,FancyToast.ERROR,false).show();
);
风格:
<!-- Picker styles and themes. -->
<style name="DatePickerTheme" parent="@style/ThemeOverlay.MaterialComponents.MaterialCalendar">
<item name="materialCalendarStyle">@style/Widget.MaterialComponents.MaterialCalendar</item>
<item name="materialCalendarFullscreenTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen</item>
<item name="materialCalendarTheme">@style/Widget.MaterialComponents.MaterialCalendar.MonthNavigationButton</item>
<item name="materialCalendarMonthNavigationButton">@style/Widget.MaterialComponents.MaterialCalendar.MonthNavigationButton</item>
</style>
我正在尝试隐藏年份选项:
它应该看起来更像这样:
我怎样才能做到这一点。我尝试更改样式主题(见上文),但毫无结果。
【问题讨论】:
【参考方案1】:您可以查看this 文档。
如下面提到的谷歌文档代码可以满足您的意图:
<style name="Theme.App" parent="Theme.MaterialComponents.*">
...
<item name="materialCalendarTheme">@style/ThemeOverlay.App.DatePicker</item>
</style>
<style name="ThemeOverlay.App.DatePicker"
parent="@style/ThemeOverlay.MaterialComponents.MaterialCalendar">
<item name="colorPrimary">@color/shrine_pink_100</item>
<item name="colorOnPrimary">@color/shrine_pink_900</item>
<item name="shapeAppearanceSmallComponent">@style/ShapeAppearance.App.SmallComponent</item>
<item name="shapeAppearanceMediumComponent">@style/ShapeAppearance.App.MediumComponent</item>
<!-- Customize text field of the text input mode. -->
<item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
所以你应该将你的样式从 MaterialCalendar 更改为 DatePicker。
【讨论】:
以上是关于Material DatePicker 禁用年份选项的主要内容,如果未能解决你的问题,请参考以下文章
如何从日期数组中禁用 Angular Material Datepicker 日期?
datepicker disabledate 禁用当前年之外的年份 和当前月之后的月份