android 真实的设备上的SwitchPreferenceCompat错误“关闭”颜色

bihw5rsg  于 2023-03-11  发布在  Android
关注(0)|答案(1)|浏览(119)

我正在使用androidx.preference:preference:1.2.0中的SwitchPreferenceCompat。在Android Studio预览版中,一切看起来都很好:

但在真实的设备中,它看起来是这样的:

这里是我的preferences.xml

<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory app:title="@string/auth_header">

        <SwitchPreferenceCompat
            app:key="@string/auth_key"
            app:title="@string/auth_title"
            android:icon="@drawable/ic_fingerprint"/>

    </PreferenceCategory>

</PreferenceScreen>

和应用主题:

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.Notes" parent="Theme.Material3.DayNight.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryVariant">@color/color_primary_variant</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/color_secondary</item>
        <item name="colorSecondaryVariant">@color/color_secondary_variant</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor">@android:color/transparent</item>
        <!-- Customize your theme here. -->
        <item name="android:windowLightStatusBar">true</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="colorAccent">@color/black</item>
    </style>
</resources>

注意colorAccent与这个问题无关,没有它结果是一样的(即使你从主题中删除所有值,结果也不会改变),我只是用它来设置首选项标题颜色。

问题:这是库错误还是我做错了什么?

设备:POCO X3 NFC(MIUI 12.5,安卓11)。
androidx.preference:preference:1.2.0
com.google.android.material:material:1.8.0

idv4meu8

idv4meu81#

这可能是与Material3主题相关的SwitchCompat小部件的错误。
我在此打开问题:
https://issuetracker.google.com/issues/271871302
https://github.com/material-components/material-components-android/issues/3295
我最终使用了自己的设置实现(常规片段+MaterialSwitch布局),因为实现自己的解决方案比处理这些bug更容易、更快。

它还增加了更多的定制,但现在我必须手动更新设置(我使用常规的ViewModel来保持状态,使用我自己的PreferencesRepository来保存/加载首选项)。

相关问题