小编bql*_*ang的帖子

如何以编程方式使用 PreferenceFragmentCompat 中的材质 3 Switch?

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>\n
Run 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"/>\n
Run 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>\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述
\n但由于某种原因,我必须像这样以编程方式构建 PreferenceFragment:

\n
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)

xml android android-preferences material-components-android

7
推荐指数
1
解决办法
1369
查看次数