java - MaterialDatePicker 不适用于 Android

标签 java android material-design androidx material-components-android

我想将项目的日期选择器更改为 Material Components for Android 提供的日期选择器,但它不起作用。

这是我试过的代码:

MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();

MaterialDatePicker<Long> picker = builder.build();

picker.show(getSupportFragmentManager(), picker.toString());

这是它的样子:

first image

它应该是这样的:

second image

谁能告诉我缺少了什么?

谢谢

最佳答案

随着Material Components for Android你可以使用新的 MaterialDatePicker .

要正常工作,您必须在您的应用中使用 Material Components Theme .
通过这种方式,您可以继承选择器的样式和主题。

要选择一个单个日期,只需使用:

MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
builder.setTitleText(R.string.your_text);
MaterialDatePicker<Long> picker = builder.build();
picker.show(getSupportFragmentManager(), picker.toString());

要选择一个日期范围,您可以使用日期范围选择器:

MaterialDatePicker.Builder<Pair<Long, Long>> builder =
                    MaterialDatePicker.Builder.dateRangePicker();
CalendarConstraints.Builder constraintsBuilder = new CalendarConstraints.Builder();
builder.setCalendarConstraints(constraintsBuilder.build());
MaterialDatePicker<?> picker = builder.build();
picker.show(getSupportFragmentManager(), picker.toString());

enter image description here

检查主题中使用的颜色

这些属性定义了您的风格。您不需要添加它们,默认情况下,它们随 Material Components 主题一起提供。

<!-- Picker styles and themes. -->
<item name="materialCalendarStyle">@style/Widget.MaterialComponents.MaterialCalendar</item>
<item name="materialCalendarFullscreenTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen</item>
<item name="materialCalendarTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar</item>

基于这些样式,选择器使用的颜色是:

HeaderLaoyout     -> background:colorPrimary, textColor:colorOnPrimary
HeaderSelection   -> background:colorPrimary, textColor:colorOnPrimary
ConfirmButtons    -> background:colorPrimary, textColor:colorOnPrimary
Buttons           -> background:colorPrimary, textColor:colorOnSurface
HeaderToggleButton->                          textColor:colorOnPrimary
Day               ->                          text:colorOnSurface  stroke:colorOnSurface
SelectedDay       -> background:colorPrimary, textColor:colorOnPrimary
RangeFillColor    -> background:colorPrimary

关于java - MaterialDatePicker 不适用于 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57807103/

相关文章:

Android 全屏对话框 fragment ,如日历应用程序

java.lang.VerifyError : class com. intellij.junit4.JUnit4TestRunnerUtil$5 覆盖 final方法 getRunner.()Lorg/junit/runner/Runner;

据说 Java 会忽略多余的空格。为什么 c=a+++++b 没有空格就不能编译?

android - 异步重复定时任务

Android:Loopj AsyncHttpClient 获取 HTTP 错误代码

reactjs - Material UI 菜单组件中的 onChange

java - 我可以使用 JComboBox 实现单词预测吗

java - 将 JPanelForm 类转换为 JFrameForm 类

java - 如何运行com.android.browser的源码?

flutter - 如何在 flutter 中设置文本行高?