アラートダイアログを画面サイズの 90% にするにはどうすればいいですか? 質問する

アラートダイアログを画面サイズの 90% にするにはどうすればいいですか? 質問する

カスタム アラート ダイアログを作成して表示することはできますが、それでもandroid:layout_width/height="fill_parent"ダイアログ xml のサイズはコンテンツと同じになります。

私が欲しいのは、おそらく 20 ピクセルのパディングを除いて画面全体を埋めるダイアログです。そうすれば、ダイアログの一部である画像は、fill_parent によってダイアログ全体のサイズに自動的に拡大されます。

ベストアンサー1

Androidプラットフォーム開発者のダイアン・ハックボーンによると、これディスカッション グループの投稿によると、ダイアログはウィンドウの最上位レイアウトの幅と高さを に設定しますWRAP_CONTENT。ダイアログを大きくするには、これらのパラメータを に設定しますMATCH_PARENT

デモコード:

    AlertDialog.Builder adb = new AlertDialog.Builder(this);
    Dialog d = adb.setView(new View(this)).create();
    // (That new View is just there to have something inside the dialog that can grow big enough to cover the whole screen.)

    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(d.getWindow().getAttributes());
    lp.width = WindowManager.LayoutParams.MATCH_PARENT;
    lp.height = WindowManager.LayoutParams.MATCH_PARENT;
    d.show();
    d.getWindow().setAttributes(lp);

属性はダイアログが表示された後に設定されることに注意してください。システムは、属性がいつ設定されるかについて慎重です。(レイアウト エンジンは、ダイアログが最初に表示されたときに属性を設定する必要があるか、または何かだと思います。)

Theme.Dialogを拡張してこれを行う方がよいでしょう。そうすれば、setAttributesを呼び出すタイミングを推測する必要がなくなります。(ただし、ダイアログが自動的に適切なライトテーマやダークテーマ、またはHoneycomb Holoテーマを採用するようにするには、もう少し手間がかかります。これは、http://developer.android.com/guide/topics/ui/themes.html#SelectATheme

おすすめ記事