kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

ダイアログの幅を指定する

ダイアログの幅をコードから指定する方法です

ダイアログを表示する際、通常は、そのダイアログの内容がぴったり納まる幅に縮小されて表示します。
レイアウトリソースで、ルートレイアウトをmatch_parentにしても、そのように調整されてしまいます。
あまりに小さいと、例えばシークバーを配置したUIの操作性等に影響がでてしまいます。

以下の記述をすることで、ダイアログの幅を指定できます。
(例として、画面の幅の0.8倍の幅のダイアログを表示する場合です)

DisplayMetrics metrics = getResources().getDisplayMetrics();
int dialogWidth = (int)(metrics.widthPixels * 0.8);

AppCompatDialog dialog = new AppCompatDialog(this);
        
dialog.setTitle("SAMPLE");
dialog.setContentView(R.layout.my_dialog_layout);

WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();    //    コンテンツを追加したあと、showの前に記述
lp.width = dialogWidth;
dialog.getWindow().setAttributes(lp);

dialog.show();

ダイアログの幅が、画面の8割の大きさになります。


参考にさせていただいたサイトです
Y.A.M の 雑記帳: Android Dialog の大きさを自分で設定する