【问题标题】:How to change Theme of "MaterialDatePicker" in Android?如何在 Android 中更改“MaterialDatePicker”的主题?
【发布时间】:2020-09-17 01:49:23
【问题描述】:

我使用 MaterialDatePicker 来选择单个日期,并且我也完成了该任务,但 我无法更改标题和按钮的主题

        MaterialDatePicker.Builder builder;
        MaterialDatePicker materialDatePicker;

        long today = MaterialDatePicker.todayInUtcMilliseconds();
        CalendarConstraints.Builder con = new CalendarConstraints.Builder();
        con.setValidator(DateValidatorPointForward.now());
        builder.setSelection(today);
        builder.setCalendarConstraints(con.build());

        materialDatePicker = builder.build();

        findViewById(R.id.startCalender).setOnClickListener(v ->
                materialDatePicker.show(getSupportFragmentManager(), builder.toString())
        );

        materialDatePicker.addOnPositiveButtonClickListener(selection -> 
        Toast.makeText(this, materialDatePicker.getHeaderText(), 
        Toast.LENGTH_SHORT).show());

【问题讨论】:

  • 在 github 上查看他们的 samples。该仓库有关于如何更改主题和颜色的示例
  • @denvercoder9 他们的样本是用 Java 编写的,而不是 Kotlin。此外,他们从头开始实现所有样板。不是模块化的解决方案。

标签: android material-design android-datepicker material-components-android material-components


【解决方案1】:

您有不同的选择。
您可以使用:

builder.setTheme(R.style.MaterialCalendarTheme);

与:

  <style name="MaterialCalendarTheme" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">
    <!-- just override the colors used in the default style -->
    <item name="colorOnPrimary">@color/primaryDarkColor</item>
    <item name="colorPrimary">@color/primaryLightColor</item>
  </style>

或者你可以使用类似的东西:

  <style name="MaterialCalendarTheme" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">

    <!-- Header panel -->
    <item name="materialCalendarHeaderLayout">@style/MaterialCalendar.HeaderLayout1</item>
    <!-- Buttons -->
    <item name="buttonBarPositiveButtonStyle">@style/TextButton.Dialog1</item>
    <item name="buttonBarNegativeButtonStyle">@style/TextButton.Dialog1</item>
  </style>
  <style name="MaterialCalendar.HeaderLayout1" parent="Widget.MaterialComponents.MaterialCalendar.HeaderLayout">
    <!--<item name="android:background">?attr/colorPrimary</item>-->
    <item name="android:background">@color/primaryLightColor</item>
  </style>
  <style name="TextButton.Dialog1" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">@color/white</item>
    <item name="backgroundTint">@color/primaryDarkColor</item>
  </style>

【讨论】:

  • 这看起来不像来自 Google 的真实 MaterialDatePicker。正/负按钮最终不会出现在屏幕底部。
  • 你好,如何更改日历背景?不是标题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 1970-01-01
  • 2023-03-12
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多