SwitchPreferenceCompat 仍然保留了旧的 Switch 样式,我知道可以通过以下方式对其 Material 3 进行样式设置:
\n主题.xml
\n<style name="Theme.Material3.Preference" parent="Theme.Material3.DayNight.NoActionBar">\n <item name="preferenceTheme">@style/MaterialPreferenceThemeOverlay</item>\n</style>\n\n<style name="MaterialPreferenceThemeOverlay" parent="PreferenceThemeOverlay">\n <item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item>\n</style>\n\n<style name="Preference.SwitchPreferenceCompat" parent="Preference.SwitchPreferenceCompat.Material">\n <item name="android:widgetLayout">@layout/preference_widget_material_switch</item>\n</style>\nRun Code Online (Sandbox Code Playgroud)\n首选项_widget_material_switch.xml
\n<?xml version="1.0" encoding="utf-8"?>\n<com.google.android.material.materialswitch.MaterialSwitch\n xmlns:android="http://schemas.android.com/apk/res/android"\n android:id="@+id/switchWidget"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:focusable="false"\n android:clickable="false"\n android:background="@null"/>\nRun Code Online (Sandbox Code Playgroud)\n设置.xml
\n<?xml version="1.0" encoding="utf-8"?>\n<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">\n <SwitchPreferenceCompat\n android:defaultValue="true"\n android:key="pref_key"\n android:summary="Preference Summary"\n android:title="Preference Title" />\n</PreferenceScreen>\nRun Code Online (Sandbox Code Playgroud)\n
\n但由于某种原因,我必须像这样以编程方式构建 PreferenceFragment:
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {\n\xc2\xa0 \xc2\xa0 val context = preferenceManager.context\n\xc2\xa0 \xc2\xa0 val screen = preferenceManager.createPreferenceScreen(context)\n\xc2\xa0 \xc2\xa0 val notificationPreference = SwitchPreferenceCompat(context).apply {\n key = …Run Code Online (Sandbox Code Playgroud)