gpt4 book ai didi

android - 新的 Android 12+ MaterialSwitch 和 androidx.preference

转载 作者:行者123 更新时间:2023-12-05 01:22:38 24 4
gpt4 key购买 nike

所以我正在更新我的应用程序以完全支持 Monet 和 Material You 指南,官方网站提到 a new design for the switches .我用过,结果是这样的:

MaterialSwitch in the app

我有一个使用 Androidx 首选项库的首选项屏幕,在撰写本文时提供最新版本,我发现设置开关主题的唯一方法(手动主题除外,这没有任何意义)是在应用的主题:

<item name="switchStyle">@style/Widget.Material3.CompoundButton.MaterialSwitch</item>

使用 SwitchPreferenceCompat(它在常规 SwitchPreference 中不起作用)这就是我得到的:

Switch in preference

无论宽度如何(不同但可以更改),禁用状态都完全不同并且与应用程序的其余部分不匹配。 为什么?最重要的是,他们为什么建议使用这样一个库:

  1. 开箱即用不支持 Material You
  2. 不支持任何新的 Material3 组件
  3. 通常很难正确定制

?

我不想太挑剔,但这超出了我的理解。

编辑:目前,我到处都在使用 switchCompat,以使应用程序统一。查看系统应用程序,我可以找到 4 种不同类型的开关:类似于第二个屏幕截图的自定义开关、旧开关和本问题中的两种类型。这真是令人困惑。

最佳答案

我理解 Google 对此的立场,他们不想让 androidx.* 包依赖于 Material 库本身,也许他们应该提供一个单独的首选项包,但这次带有完整的 Material 小部件。

可能与您的问题无关,就像我在其他地方被问到的那样,为了优先使用 Material 1.7.0 的全新 MaterialSwitch,我用自定义布局覆盖了它的 widgetLayout通过 android:widgetLayout="@layout/preference_material_switch"(实际上我以编程方式应用它,如 .widgetLayoutResource = R.layout.preference_material_switch)并将以下内容放在 preference_material_switch.xml布局文件,

<?xml version="1.0" encoding="utf-8"?>
<!-- Derived from https://github.com/androidx/androidx/blob/8cb282cc/preference/preference/res/layout/preference_widget_switch_compat.xml -->
<com.google.android.material.materialswitch.MaterialSwitch xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/switchWidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:focusable="false" />

这是结果,

enter image description here

关于android - 新的 Android 12+ MaterialSwitch 和 androidx.preference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73639187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com