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。样式的父级是

parent="@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 回答
0

我使用此代码并解决了问题

Window window = alertDialog.getWindow();
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);
于 2019-06-16T08:49:45.177 回答