Android Тема MaterialDatePickerDialog - PullRequest
       30

Android Тема MaterialDatePickerDialog

0 голосов
/ 17 апреля 2020

Я пытаюсь использовать диалог выбора даты из новой библиотеки Google Material. Теперь я придерживаюсь темы диалогов, потому что я работаю над проектом с некоторым наследием. Также тема одиночной деятельности не подходит для моих целей (например, есть белый основной цвет и вторичный и основной вариант и т. Д. c.)

<item name="colorPrimary">@color/main_color_background</item>
<item name="colorSecondary">@color/main_color_background</item>
<item name="colorSecondaryVariant">@color/main_color_background</item>
<item name="colorPrimaryVariant">@color/main_color_background</item>

Итак, MaterialDatePickerDialogBuilder имеет функцию setTheme(resId). Но когда я установил новую подходящую тему, диалог стал очень уродливым. Снимок экрана уродливого диалога . Я пытался установить какие-либо параметры в своей теме, и она не выглядит лучше.

<style name="TestTheme" parent="@android:style/Widget.Material.Light.DatePicker">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryVariant">@color/primaryVariant</item>
    <item name="android:colorBackground">@color/background</item>
    <item name="colorSurface">@color/surface</item>
    <item name="colorError">@color/error</item>
</style>

Может быть, я что-то забыл? Я не знаю, что еще я могу попробовать.

1 Ответ

0 голосов
/ 28 апреля 2020

В моем случае решение проблемы состоит в том, чтобы переопределить темы материала для диалоговых окон выбора даты и установить атрибуты темы приложения materialCalendarTheme, materialCalendarFullscreenTheme.

Например, это выглядит следующим образом:

<style name="Widget.Custom.MaterialCalendar" parent="ThemeOverlay.MaterialComponents.Dialog">
    <item name="materialCalendarStyle">@style/Widget.Custom.MaterialCalendarStyle</item>

    <!-- Header Styles -->
    <item name="materialCalendarHeaderLayout">
        @style/Widget.Custom.MaterialCalendar.HeaderLayout
    </item>
    <item name="materialCalendarHeaderDivider">
        @style/Widget.Custom.MaterialCalendar.HeaderDivider
    </item>
    <item name="materialCalendarHeaderTitle">
        @style/Widget.Custom.MaterialCalendar.HeaderTitle
    </item>
    <item name="materialCalendarHeaderSelection">
        @style/Widget.Custom.MaterialCalendar.HeaderSelection
    </item>
    <item name="materialCalendarHeaderConfirmButton">
        @style/Widget.Custom.MaterialCalendar.HeaderConfirmButton
    </item>
    <item name="materialCalendarHeaderToggleButton">
        @style/Widget.Custom.MaterialCalendar.HeaderToggleButton
    </item>

    <!-- Grid Styles -->
    <item name="materialCalendarDay">@style/Widget.Custom.MaterialCalendar.DayTextView
    </item>

    <!-- Action Styles -->
    <item name="buttonBarPositiveButtonStyle">
        @style/Widget.Custom.Button.TextButton.MaterialCalendar.ButtonBar
    </item>
    <item name="buttonBarNegativeButtonStyle">
        @style/Widget.Custom.Button.TextButton.MaterialCalendar.ButtonBar
    </item>
    <item name="materialButtonStyle">
        @style/Widget.Custom.Button.TextButton.MaterialCalendar.TextButton
    </item>
</style>
...