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

0

レイアウト ファイルでFragmentとその親を確認しますActivity。通常、新しいプロジェクトまたはレイアウト/画面を作成すると、Android レイアウト ファイルに自動パディングが提供されます。

于 2015-06-08T08:58:40.410 に答える
0

Fragment のレイアウトに入ります。メイン/親レイアウトに以下のタグが表示されます。

このようにするandroid:paddingBottomandroid:paddingTop、これらを削除します。

または、すべてのフラグメント/アクティビティ/レイアウトからこのパディングを削除する場合。dimen.xml に移動し、activity_vertical_margin0 として作成します。デフォルト値は 16dp になります。

于 2015-06-08T09:03:14.067 に答える