Android:在容器的中心显示自定义对话框

时间:2012-05-02 10:46:37

标签: android android-dialog

如何将自定义对话框显示为容器的中心?

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 个答案:

答案 0 :(得分:45)

将fill_parent更改为wrap_content。我希望这将是对话框出现在活动一角的问题。它占用了整个布局的空间。所以改变它可以帮助你获得你真正想要的东西。

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

答案 1 :(得分:10)

我将此添加到对话框的自定义样式中,并且工作正常。

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

我的对话框的宽度和高度设置为wrap_content。样式的父级是

父= “@机器人:风格/ Theme.Light”

答案 2 :(得分: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);

其中对话框是要显示的对话框对象。在对话框的布局中,您可以根据需要定义布局视图:居中与否。

答案 3 :(得分:0)

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

Window window = alertDialog.getWindow();
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);