我正在尝试为我的应用程序建立首选屏幕。我创建了一个名为SettingsFragment的类,它从PreferenceFragment扩展而来。我没有从XML加载首选项,因为我需要动态加载一些数据。这就是为什么我要用编程的方式构建所有东西。一切如期而至。但是上面有一些额外的填充物。见下图:
我不知道为什么会这样。下面是我在SettingsFragment类中编写的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getActivity());
    root.setTitle("Hello World");

    PreferenceCategory cat1 = new PreferenceCategory(root.getContext());
    root.addPreference(cat1);

    ListPreference lang = new ListPreference(root.getContext());
    lang.setEntries(new CharSequence[]{"English", "Bangla"});
    lang.setEntryValues(new CharSequence[]{"en", "bn"});
    lang.setTitle("Choose Language");
    lang.setSummary("English");
    cat1.addPreference(lang);

    CheckBoxPreference check = new CheckBoxPreference(root.getContext());
    check.setTitle("Title Check");
    cat1.addPreference(check);

    setPreferenceScreen(root);
}

仅供参考,我正在我的应用程序中使用NavigationDrawer。当从抽屉中单击导航项时,将加载此SettingsFragment

最佳答案

您正试图添加一个没有标题的首选项类别,这会导致空格。
以下是问题所在:

PreferenceCategory cat1 = new PreferenceCategory(root.getContext());
root.addPreference(cat1);

因此,您可以将标题添加到首选项类别,如下所示:
PreferenceCategory cat1 = new PreferenceCategory(root.getContext());
cat1.setTitle("Category");
root.addPreference(cat1);

如果不需要首选项类别,可以按如下方式修改代码:
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getActivity());
            root.setTitle("Hello World");

            ListPreference lang = new ListPreference(root.getContext());
            lang.setEntries(new CharSequence[] { "English", "Bangla" });
            lang.setEntryValues(new CharSequence[] { "en", "bn" });
            lang.setTitle("Choose Language");
            lang.setSummary("English");
            root.addPreference(lang);

            CheckBoxPreference check = new CheckBoxPreference(root.getContext());
            check.setTitle("Title Check");
            root.addPreference(check);
            setPreferenceScreen(root);
        }

关于android - 摆脱上面PreferenceFragment中的多余填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30704903/

10-11 04:41