提问者:小点点

如何设计Android材质日历的各种组件


我正在尝试对此MaterialCalendal进行样式设置,但我没有得到任何帮助,如果您能提供任何帮助,我将不胜感激。 我的styles.xml类似于以下内容:

 <style name="AppTheme" parent="Theme.MaterialComponents">
    <item name="materialCalendarTheme">@style/ThemeMaterialCalendar</item>
</style>

<style name="ThemeMaterialCalendar" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">
    <item name="buttonBarPositiveButtonStyle">@style/AlterDialogButtonStyle</item>
    <item name="buttonBarNegativeButtonStyle">@style/AlterDialogButtonStyle</item>
    <item name="materialButtonStyle">@style/ThemeMaterialCalendarTextButton</item>
    <item name="android:colorAccent">@color/accent</item>
</style>

<style name="ThemeMaterialCalendarTextButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog.Flush">
    <item name="android:textColor">?attr/colorAccent</item>
</style>

<style name="AlterDialogButtonStyle" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="android:textColor">?attr/colorAccent</item>
</style>

它呈现如下内容:

非常浅的蓝色/青色是我的颜色重音标题是紫色-y颜色。 这些都很好。 我能够用上面的styles.xml更改它们。

不过,我还想将MaterialCalendal的深灰色背景更改为白色,当然,然后将文本从白色更改为黑色或灰色(这样可以看到),以及为月份和年份选择设置箭头。 任何选定的年或日都应使用强调颜色突出显示。

本质上,我想要与此类似的内容(请忽略以下屏幕截图是旧的DatePickerDialog/code>,而不是新的MaterialCalendal):

如有任何帮助,我们将不胜感激。

PS:我不想改变任何我的主,次要或强调的颜色为整个应用程序(因为它会破坏其余的配色方案)


共1个答案

匿名用户

MaterialDatePicker的背景色基于ColorSurface属性。

您可以使用MaterialDatePicker的自定义主题来覆盖它:

<style name="MaterialCalendarThemeBackground" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">
    <item name="colorSurface">@color/....</item>
</style>

然后使用:

MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
builder.setTheme(R.style.MaterialCalendarThemeBackground);