- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在更新我的应用程序以完全支持 Monet 和 Material You 指南,官方网站提到 a new design for the switches .我用过,结果是这样的:
我有一个使用 Androidx 首选项库的首选项屏幕,在撰写本文时提供最新版本,我发现设置开关主题的唯一方法(手动主题除外,这没有任何意义)是在应用的主题:
<item name="switchStyle">@style/Widget.Material3.CompoundButton.MaterialSwitch</item>
使用 SwitchPreferenceCompat(它在常规 SwitchPreference 中不起作用)这就是我得到的:
无论宽度如何(不同但可以更改),禁用状态都完全不同并且与应用程序的其余部分不匹配。 为什么?最重要的是,他们为什么建议使用这样一个库:
?
我不想太挑剔,但这超出了我的理解。
编辑:目前,我到处都在使用 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" />
这是结果,
关于android - 新的 Android 12+ MaterialSwitch 和 androidx.preference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73639187/
所以我正在更新我的应用程序以完全支持 Monet 和 Material You 指南,官方网站提到 a new design for the switches .我用过,结果是这样的: 我有一个使用
我是一名优秀的程序员,十分优秀!