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 禁用当前年之外的年份 和当前月之后的月份

为什么不在材料日期选择器上更改年份

利用My97DatePicker实现年份多选

Material UI DatePicker 显示错误的日期

将 Jquery 升级到 3.4 后,Material js 单选按钮禁用不起作用?