как настроить цвета и другие параметры средства выбора диапазона дат компонента материала? - PullRequest
2 голосов
/ 17 июня 2020

Как я могу изменить цвет заголовка только в средстве выбора диапазона дат, я искал, не нашел, как именно, я просто знаю, как изменить цвет всего средства выбора диапазона дат с изменением цвета colorPrimary, и это изменит цвет всего заголовка и выбранных дат, я хочу изменить только цвет заголовка

, а также, если есть способ изменить размер текста заголовка, я знаю, что мы можем изменить заголовок, но можем ли мы изменить размер заголовка?

это то, что я пробовал в стиле

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/shamrock_green</item>
    <item name="colorPrimaryDark">@color/shamrock_green_dark</item>
    <item name="colorAccent">@color/shamrock_green</item>
    <item name="colorButtonNormal">@color/shamrock_green</item>
    <item name="colorOnSecondary">@color/white</item>
    <item name="colorOnSurface">@android:color/transparent</item>
    <item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
    <item name="materialCalendarFullscreenTheme">@style/CustomThemeOverlay_MaterialCalendar_Fullscreen</item>

</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorOnSurface">@android:color/black</item>
    <item name="colorPrimary">@color/black</item>
</style>

<style name="CustomThemeOverlay_MaterialCalendar_Fullscreen"
    parent="@style/ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen">
    <item name="materialCalendarStyle">@style/Custom_MaterialCalendar.Fullscreen</item>
</style>
<style name="Custom_MaterialCalendar.Fullscreen"
    parent="@style/Widget.MaterialComponents.MaterialCalendar.Fullscreen">
    <item name="android:windowFullscreen">false</item>
    <item name="android:headerBackground">@color/shamrock_green</item>
</style>

<style name="ThemeMaterialCalendarButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">@color/shamrock_green</item>
</style>

<style name="ThemeMaterialCalendarTextButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog.Flush">
    <item name="android:textColor">@color/shamrock_green</item>
    <item name="iconTint">@color/shamrock_green</item>
</style>

<style name="AppTheme.FullScreen" parent="@style/Theme.AppCompat">
    <item name="windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
</style>


</resources>

теперь работает то, что он отображается как диалог, а не в полноэкранном режиме, что я хочу, но без цвета текста и фона изменений, единственный способ изменить цвета - это изменить цвета, такие как colorPrimary, и эти цвета повлияют на все приложение

1 Ответ

1 голос
/ 17 июня 2020

Вы можете использовать наложение темы:

MaterialDatePicker.Builder<Pair<Long, Long>> builderRange =
        MaterialDatePicker.Builder.dateRangePicker();
builderRange.setTheme(R.style.CustomMaterialCalendarTheme);

с:

  <style name="CustomMaterialCalendarTheme" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">
       <!-- Header Layout -->
       <item name="materialCalendarHeaderLayout">@style/customHeaderLayout</item>
       <!-- Header title -->
       <item name="materialCalendarHeaderTitle">@style/customHeaderTitle</item>
       <!-- Header selection title -->
       <item name="materialCalendarHeaderSelection">@style/CustomHeaderSelection</item>
  </style>


   <style name="customHeaderLayout" parent="@style/Widget.MaterialComponents.MaterialCalendar.HeaderLayout">
      <item name="android:background">@color/.....</item>
   </style>

    <style name="customHeaderTitle" parent="@style/Widget.MaterialComponents.MaterialCalendar.HeaderTitle">
      <item name="android:textAppearance">@style/customTextAppearance</item>
    </style>

   <style name="customTextAppearance" parent="@style/TextAppearance.MaterialComponents.Overline">
      <item name="android:textSize">xxsp</item>
   </style>

   <style name="CustomHeaderSelection" parent="Widget.MaterialComponents.MaterialCalendar.HeaderSelection">
      <item name="android:textSize">xxsp</item>
   </style>

enter image description here

...