web-dev-qa-db-ja.com

ダイアログフラグメントの上部のレイアウトマージン/パディング

フラグメントを使用すると、上部の追加スペースによってレイアウトが乱れ、これがどこから来ているのかわかりません。次のようになります。

enter image description here

この空きスペースの考えられる原因は何ですか?まだ見つけていないテーマやスタイル設定、またはこのスペースはアクションバー用に予約されていますか?私は本当にこれを取り除きたいです。

対応するレイアウトxmlとダイアログをインスタンス化するコードは次のとおりです。

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_margin="5dp"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

        <ProgressBar
        Android:layout_margin="5dp"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/search_progress"
        style="?android:attr/progressBarStyle"
        Android:indeterminate="true" />

        <TextView
            Android:id="@+id/textView1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentTop="true"
            Android:layout_toRightOf="@+id/search_progress"
            Android:text="Searching for:" />

        <TextView
            Android:id="@+id/searchingNameTextView"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:textStyle="bold"
            Android:layout_alignBottom="@+id/search_progress"
            Android:layout_alignLeft="@+id/textView1"
            Android:text="Barcelona" />

</RelativeLayout>

Java:

FragmentManager fm = this.getSupportFragmentManager();
mSearchingDialog = new SearchingDialogFragment();
Bundle bundle = new Bundle();
bundle.putString("name", mCityToAdd.userName());
mSearchingDialog.setArguments(bundle);
mSearchingDialog.show(fm, TAG);

また、スクロールビューに関連する問題になると考えて、ここでこの質問をしましたが、スペースはすべてのフラグメントに表示されます。

ScrollViewは上部に余分なスペースを追加します

16
Herr von Wurst

ダイアログのgetWindow().requestFeature(Window.FEATURE_NO_TITLE);またはsetContentView(R.layout.<dialog_layout>);メソッドでonCreate() right beforeonCreateView()を呼び出してみてください。

24

DialogFragmentの上部にあるその空のスペースを再利用/削除する方法は2つあります。

簡単に削除したい場合:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); //  <--
    View view = inflater.inflate(R.layout.fragment_dialog, container, false);
    return view;
}

ダイアログタイトルに再利用したい場合:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     getDialog().setTitle("Some title..."); //  <--
     View view = inflater.inflate(R.layout.fragment_dialog, container, false);
     return view;
}
22
letiagoalves

さらに別の解決策:

_    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NO_TITLE, getActivity().getApplicationInfo().theme);
    }
_

この例では、アプリケーションのデフォルトテーマを使用しています。効果を得るには、setStyle()ではなくonCreate()onCreateView()を呼び出す必要があることにも注意してください。

4
Magnus W