日々精進

新しく学んだことを書き留めていきます

Dialogを下寄せで画面幅いっぱいに表示する

Dialogを表示すると通常は上下左右とも真ん中寄せになるが、下寄せで幅は画面いっぱいにしたい場合は以下のコードをDialogFragmentのサブクラスに実装すればよい。

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

    Dialog dialog = getDialog();
    WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    lp.width = (int) (metrics.widthPixels);
    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
    lp.gravity = Gravity.BOTTOM;
    dialog.getWindow().setAttributes(lp);
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.setCanceledOnTouchOutside(true);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    Window window = dialog.getWindow();
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
    window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    return dialog;
}

やりたいことはシンプルなのに結構コード書かないといけないなぁ。。