18

カスタムダイアログをコンテナの中心として表示するにはどうすればよいですか?

Dialog customdialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar); 
Window window = customdialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
window.setGravity(Gravity.CENTER);

R.style.Theme_Translucent_NoTitleBar-cutomdialogの境界線を削除するために使用されます。この行を使用すると、タブレットの左上隅にダイアログが表示されますか?

誰かがこの問題を解決するのを手伝ってくれますか?

4

4 に答える 4

50

fill_parent を wrap_content に変更します。これがダイアログがアクティビティの隅に表示される問題になることを願っています。レイアウト全体のスペースが必要です。したがって、これを変更すると、本当に必要なものを取得するのに役立つ場合があります。

Window window = customdialog.getWindow();
window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);

dialog.show() ステートメントの後に上記のコードを使用します

于 2012-05-02T11:17:10.040 に答える
16

これをダイアログのカスタム スタイルに追加したところ、問題なく動作しました。

<item name="android:layout_gravity">center</item>

ダイアログの幅と高さが wrap_content に設定されています。スタイルの親は

親="@android:style/Theme.Light"

于 2013-09-04T19:00:22.127 に答える
0

このコードに行きます:

        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.MATCH_PARENT;
        window.setAttributes(lp);

dialog は、表示されるダイアログ オブジェクトです。ダイアログのレイアウト内で、必要に応じてレイアウトのビューを定義できます: 中央に配置するかどうか。

于 2015-06-30T14:22:27.627 に答える