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

Posted

技术标签:

【中文标题】Android:在容器中心显示自定义对话框【英文标题】:Android: Display custom dialog in center of the container 【发布时间】:2012-05-11 20:03:07 【问题描述】:

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

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的边框。一旦我使用了这条线,对话框就会出现在平板电脑的左上角?

谁能帮我解决这个问题?

【问题讨论】:

删除边框创建自定义背景并将其添加到样式 ​​@android:color/transparent 【参考方案1】:

将 fill_parent 更改为 wrap_content。我希望这将是对话框出现在活动角落的问题。它占用了整个布局的空间。因此更改它可能会帮助您获得真正想要的内容。

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

在 dialog.show() 语句后使用上述代码

【讨论】:

接受答案并投票将有助于我们双方提高声誉所以请对@Kamal 做同样的事情很高兴为您提供帮助。:-) 但我想不给 window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);有没有可能 试过 window.setDimAmount(0.5f);但它不工作。然后将 Root 布局设置为主布局并设置宽度和高度以填充父级,背景半透明但布局位于顶部。【参考方案2】:

我将此添加到对话框的自定义样式中,效果很好。

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

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

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

【讨论】:

确实,我按照 Sreedev 的建议做了,但我无法将对话置于中心位置。以我的风格添加这个参数为我解决了这个问题。【参考方案3】:

我会去找这段代码:

        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);

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

【讨论】:

不要复制 LayoutParams,它会破坏边框渲染。使用 lp = window.getAttributes();【参考方案4】:

我用这段代码,问题解决了

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

【讨论】:

以上是关于Android:在容器中心显示自定义对话框的主要内容,如果未能解决你的问题,请参考以下文章

更改构建版本后 Android 自定义警报对话框显示错误

如何在显示android后更改自定义对话框中的视图的可见性

Android IME:显示一个自定义弹出对话框(如 Swype 键盘),可以在 TextView 中输入文本

android:常用的AlertDialog对话框及自定义对话框

Android:自定义底页对话框

为 Android M 权限对话框提供自定义文本