重新创建类似于 Android 12 设置的开关

Recreate switches similar to Android 12 settings

Android 12 的设置开关现在看起来像这样,

它的代码在这里:

https://android.googlesource.com/platform/packages/apps/Settings/+/c4cc279a2a32e6b5dfac9af4a16a4d98def82a22/res/xml/configure_notification_settings.xml#133

但是 androidx.preference.SwitchPreferenceCompatandroidx.preference.SwitchPreference 在我更新了 material 库(1.5.0,Material 3),

的应用程序中看起来都不像这样

我怎样才能至少在 Android 12 中拥有相同的外观(和感觉、动画等)开关,或者 Android 如何为自己做到这一点?谢谢!

您可以轻松自定义您的开关,使其看起来像这样。

styles.xml 中添加:

<style name="App.Switches" parent="Widget.Material3.CompoundButton.Switch">
    <item name="track">@drawable/switch_track</item>
    <item name="android:thumb">@drawable/switch_thumb</item>
</style>

switch_track.xml :

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item>
    <shape android:shape="rectangle">
        <solid android:color="#000000" />
        <corners android:radius="56dp" />
        <size
            android:width="64dp"
            android:height="28dp" />
    </shape>
 </item>
</layer-list>

switch_thumb.xml :

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item
    android:bottom="4dp"
    android:left="4dp"
    android:right="4dp"
    android:top="4dp">
    <shape android:shape="oval">
        <solid android:color="#000000" />
        <size
            android:width="20dp"
            android:height="20dp" />
    </shape>
 </item>
</layer-list>

最后在您应用的主主题中添加这一行,以将此样式应用于您应用中的所有开关:

<item name="switchStyle">@style/App.Switches</item>