标签: switchpreference

Android AppCompat v21提供的SwitchCompat不提供SwitchCompatPerefrence

似乎AppCompat v21提供的SwitchCompat不提供SwitchCompatPerefrence.

我知道我可以使用SwitchPreference但它在视觉上并不相同.在Android 4.x上; 当我在活动界面上使用v21的SwitchCompact时,它看起来像是材质切换按钮,但是,因为没有SwitchCompactPreference,我必须在我的pereference视图中使用SwitchPreference,显然它有Android 4.0外观.

它看起来像AppCompact v21半完成.

我错过了什么吗?

android android-appcompat switchcompat switchpreference

14
推荐指数
3
解决办法
5907
查看次数

新的 Android 12+ MaterialSwitch 和 androidx.preference

因此,我正在更新我的应用程序以完全支持 Monet 和 Material You 指南,并且官方网站提到了开关的新设计。我用了一下,结果是这样的:

应用程序中的材质切换

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

<item name="switchStyle">@style/Widget.Material3.CompoundButton.MaterialSwitch</item>
Run Code Online (Sandbox Code Playgroud)

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

优先切换

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

  1. 不支持开箱即用的 Material You
  2. 不支持任何新的 Material3 组件
  3. 一般来说,很难正确定制

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

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

android styles android-preferences switchpreference material-you

8
推荐指数
1
解决办法
2672
查看次数

为什么我不能用SwitchPreference交换CheckBoxPreference?

我做了一个简单PreferenceScreen的多重Preference CategorysCheckBoxPreferences.

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="General">

        <CheckBoxPreference
            android:title="GPS"
            android:key="gps_preference"
            android:summary="Enales the GPS tracking of your device"
            android:defaultValue="true"
            ></CheckBoxPreference>

        <SwitchPreference
        android:title="WLAN"
        android:key="wlan_preference"
        android:summary="Enables the WLAN usage"
        android:defaultValue="true"></SwitchPreference>

        <CheckBoxPreference
            android:title="Benachrichtigungen"
            android:key="benachrichtigung_preference"
            android:summary="Enables the Push messages"
            android:defaultValue="true"
            ></CheckBoxPreference>

    </PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

此首选项屏幕位于a android.support.v7.preference.PreferenceFragmentCompat.如果我像往常一样离开,那一切都很好.

但是,如果我想转出一个CheckBoxPreferenceSwitchPreference(应该通过简单地切换出来的XML标记的工作CheckBoxPreferenceSwitchPreference我得到我的渲染错误)design标签:

渲染期间引发异常:android.preference.CheckBoxPreference无法强制转换为android.preference.GenericInflater $ Parent

堆栈跟踪:

android.view.InflateException: Binary XML file line #15: Error inflating class (not found)SwitchPreference
                                                                               at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:301)
                                                                               at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:359)
                                                                               at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:361)
                                                                               at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:167) …
Run Code Online (Sandbox Code Playgroud)

android android-preferences android-studio switchpreference

6
推荐指数
1
解决办法
1420
查看次数

SwitchPreferenceCompat:android:switchTextOff/switchTextOn不起作用

我正在尝试显示一个switchPreference,它允许用户根据里程或公里显示距离.我正在使用SwitchPreferenceCompat支持库.根据库,我可以使用textSwitchOff和textSwitchOn向开关添加文本.我只想在我的交换机上添加"km"或"miles",以便用户知道显示哪个指标.

根据这个文档,我需要的只是下面的代码:

<android.support.v7.preference.PreferenceCategory
    android:layout="@layout/preferences_category"
    android:title="Distance" >

    <android.support.v7.preference.SwitchPreferenceCompat android:title="KM or Miles"
        android:key="kmormiles"
        android:switchTextOff="miles"
        android:switchTextOn="km"
        android:defaultValue="true"/>

</android.support.v7.preference.PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)

但是,开关看起来像普通开关,开关本身没有额外的文字.

在此输入图像描述

如何使用textOn和textOff显示它?

我也尝试过以下方法:

    addPreferencesFromResource(R.xml.preferences);
    kmormiles = (SwitchPreferenceCompat) findPreference("kmormiles");
    kmormiles.setSwitchTextOff("Km");
    kmormiles.setSwitchTextOn("miles");
Run Code Online (Sandbox Code Playgroud)

仍然无法正常工作.我正在尝试两种不同的genymotion模拟器,API 16和API 21.

android switchpreference

5
推荐指数
1
解决办法
6174
查看次数

androidx:SwitchPreference VS SwitchPreferenceCompat

Androidx Preference 库提供了两个用于在“设置”屏幕中实现 SwitchPreference 的类:

  1. 切换偏好设置
  2. 切换偏好兼容性

在撰写此问题时,AOSP 源代码中的两种实现(AOSP Androidx SwitchPreferenceAOSP Androidx SwitchPreferenceCompat)看起来几乎相同,除了一些syleables等之外......

所以我的问题是,考虑到与其实现的未来可能发生的变化的兼容性,我们必须使用哪一个

android switchpreference android-jetpack

5
推荐指数
1
解决办法
1904
查看次数

Android - 禁用 SwitchPreference 更改状态但获得点击响应以启动对话框?

如果我禁用使用setEnabled(false)开关是 (1) 设置为关闭和 (2) 我没有收到OnClickListener启动对话框的响应。

编辑:在这种情况下,我不希望开关自动从开切换到关。

有没有人处理过这个问题?

android switchpreference

3
推荐指数
1
解决办法
1719
查看次数