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的边框。一旦我使用了这条线,对话框就会出现在平板电脑的左上角?
谁能帮我解决这个问题?
【问题讨论】:
删除边框创建自定义背景并将其添加到样式将 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 IME:显示一个自定义弹出对话框(如 Swype 键盘),可以在 TextView 中输入文本