2

我正在尝试为我的应用程序构建一个偏好屏幕。我创建了一个名为的类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从抽屉中单击导航项时加载。

4

3 回答 3

3

您正在尝试添加一个没有标题的 PreferenceCategory,这会导致空白。

以下行是问题:

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);
        }
于 2015-06-08T09:40:07.190 回答
0

检查您的布局文件Fragment及其父级Activity,通常当您创建新项目或布局/屏幕时,您的 android 布局文件上会提供自动填充。

于 2015-06-08T08:58:40.410 回答
0

进入您的片段布局。您将在主/父布局中看到以下标签。

像这样android:paddingBottomandroid:paddingTop删除这些。

或者,如果您想从每个片段/活动/布局中删除此填充。转到dimen.xml并将activity_vertical_margin其设为0。它的默认值为16dp。

于 2015-06-08T09:03:14.067 回答