web-dev-qa-db-ja.com

水平方向にいっぱいになるダイアログを作成する方法

このダイアログを指定するレイアウトで使用する場合Android:layout_width="match_parent"このダイアログが表示されます。

small dialog

より広いダイアログが必要です。何か案は?

35
west44

これを行うには、ダイアログが使用するWindowオブジェクトを取得し、幅をリセットします。以下に簡単な例を示します。

_//show the dialog first
AlertDialog dialog = new AlertDialog.Builder(this)
        .setTitle("Test Dialog")
        .setMessage("This should expand to the full width")
        .show();
//Grab the window of the dialog, and change the width
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = dialog.getWindow();
lp.copyFrom(window.getAttributes());
//This makes the dialog take up the full width
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(lp);
_

最終結果は次のとおりです。ものを微調整する必要がある場合(背景の変更など)、ダイアログに対して行うことができるスタイリングがはるかに多いことに注意してください。過去にこれをしなければならなかったとき、私は通常このメソッドを使用し、ビルダークラスのsetView()でダイアログで使用されるレイアウトをカスタマイズします。

example

122
wsanville

これを修正する別の方法は、以下を使用することです:

import Android.support.v7.app.AlertDialog;

の代わりに:

import Android.app.AlertDialog;
4
user2880229