如何更改日期选择器的状态栏颜色?

时间:2021-02-04 09:28:34

标签: android

我有一个数据选择器:

 val builder = MaterialDatePicker.Builder.dateRangePicker()
        val picker = builder.build()
        picker.show(childFragmentManager, picker.toString())

状态栏颜色为黑色:

enter image description here

我希望它像托管此 DataPicker 的片段一样透明:

enter image description here

怎么做?

1 个答案:

答案 0 :(得分:3)

在对材料日期选择器的主题进行一些深入研究后,我能够弄清楚:

在您的活动主题中,您必须添加

<item name="materialCalendarFullscreenTheme">@style/CustomMaterialCalendarFullscreenTheme</item>

并按照以下方式创建主题

<style name="CustomMaterialCalendarFullscreenTheme" parent="ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen">
    <item name="android:windowIsFloating">false</item>
</style>

您可以通过将其添加到 CustomMaterialCalendarFullscreenTheme 来添加自定义状态栏颜色:

<item name="android:statusBarColor">@color/someCoolColor</item>

注意:如果您对导致问题的原因不感兴趣,可以在此处停止阅读!

原因是 ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen 的祖先之一将 android:windowIsFloating 设置为 true 并且如果“浮动”内容非常大(在我们的例子中,它是全屏的) Android 决定将状态栏颜色更改为黑色。