调整 androidx.preference 对话框以跟随 Material 你

Adjust androidx.preference dialogs to follow Material You

我有两个包含首选项部分的应用程序,我正在使用首选项库,这是撰写本文时可用的最新版本:

    implementation "androidx.preference:preference:1.2.0-rc01"

现在,我将我的应用程序设置为使用并遵循新的 Material3(或 Material You)主题,但问题是我面对的是,虽然普通对话框的主题是正确的,但首选项部分中的对话框只是部分主题(圆角半径)。他们显然不使用新样式,这种 不一致 让我很生气 :D

目前,我没有找到一种没有怪异变通方法的主题,所以我会很感激你的建议。这是我目前的对话框样式

<!-- Dialog theme -->
<style name="ThemeOverlay.App.MaterialAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
    <item name="colorOnSurface">?colorAccent</item>
    <item name="alertDialogStyle">@style/MaterialAlertDialog.App</item>
    <item name="dialogCornerRadius">@dimen/bottom_sheet_corners</item>
</style>

<!-- Note: shape appearance doesn't work with the preference dialogs (they're not material) -->
<style name="MaterialAlertDialog.App" parent="MaterialAlertDialog.Material3">
    <item name="shapeAppearance">@style/ShapeAppearance.App.MediumComponent</item>
    <item name="shapeAppearanceOverlay">@null</item>
</style>

也许这只是等待的问题

目前,首选项对话框仍使用 AlertDialog 来扩充视图。以下是我在 styles.xml 中定义的应用 Material3 对话框主题的内容:

注意:这涵盖了大部分 MaterialAlertDialog 样式,但您仍然需要定义其他样式,例如圆角半径和 background/text 颜色。

<item name="alertDialogTheme">@style/ThemeOverlay.Material3.MaterialAlertDialog</item>
<item name="dialogCornerRadius">28dp</item>