【问题标题】:Get rid of extra padding above in PreferenceFragment在 PreferenceFragment 中去掉上面的额外填充
【发布时间】:2015-06-08 08:56:21
【问题描述】:

我正在尝试为我的应用构建首选项屏幕。我创建了一个名为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。

【问题讨论】:

    标签: android preferencefragment


    【解决方案1】:

    您正在尝试添加没有标题的 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);
            }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回答,但这里并非如此。我找到了答案。请看第一个答案。 :)
      • 我明白了,很高兴你找到了答案:D
      【解决方案3】:

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

      喜欢这个android:paddingBottom 或android:paddingTop 删除这些。

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

      【讨论】:

      • 感谢您的回答,但这里并非如此。我找到了答案。请看第一个答案。 :)
      猜你喜欢
      • 2016-07-24
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 2013-07-16
      • 2018-03-30
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多