PreferenceFragmentCompat默认情况下具有iconSpaceReserved为true

时间:2018-11-23 08:53:50

标签: android android-preferences androidx preferencefragment

我已经迁移到androidx。*库,其中一个是新的首选项库: androidx.preference:preference:1.1.0-alpha01-它的最新版本。

release notes iconSpaceReserved中所述,属性不能与PreferenceCategories正确配合使用。

但是看起来默认情况下它设置为 true

我已经建立了演示项目来对其进行测试。

PreferencesFragment

import androidx.preference.PreferenceFragmentCompat;

public class SetttingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        addPreferencesFromResource(R.xml.preferences);
    }
}

preferences.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <PreferenceCategory android:title="Category 1">
        <Preference
            android:key="pref1"
            android:title="Preference 1" />
        <Preference
            android:key="pref2"
            android:title="Preference 2" />
    </PreferenceCategory>
    <PreferenceCategory
        android:title="Category 2"
        app:iconSpaceReserved="false">
        <Preference
            android:key="pref3"
            android:title="Preference 3" />
        <Preference
            android:key="pref4"
            android:title="Preference 4"
            app:iconSpaceReserved="false" />
    </PreferenceCategory>
    ...
</PreferenceScreen>

首选项主题已根据需要设置。

styles.xml

<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>

屏幕截图

PreferencesFragment

手动设置app:iconSpaceReserved=false时(如在PreferenceCategory 2和Preference 4上看到的),它可以正常工作,但否则保留图标空间。 另外,docs表示默认情况下为false

  

默认情况下,没有提供图标时,首选项图标视图的可见性将设置为“消失”,因此此属性的默认值为false。

是该库中的新错误,还是未设置图标留出空间的新功能?还是我做错了什么?

我知道解决方法:


编辑:

浏览了源代码之后,我发现了下一个内容。

PreferenceThemeOverlay -> anyPreferenceStyle设置了属性

<item name="iconSpaceReserved">@bool/config_materialPreferenceIconSpaceReserved</item>

指的是

values/values.xml
    <bool name="config_materialPreferenceIconSpaceReserved">false</bool>

values-sw360dp-v13/values-sw360dp-v13.xml
    <bool name="config_materialPreferenceIconSpaceReserved">true</bool>

出于某种原因,此处将其设置为true

1 个答案:

答案 0 :(得分:1)

我已将其发布在问题跟踪器上,并得到以下答案:

  

这是预期的,也是设置材料规格的一部分。看到   Material Design guide在“对齐方式”下。