安卓的自定义对话框,貌似很多限制,比如有白边、黑边,又或者对话框外有一层透明灰 {MOD},又或者对话框大小无法控制,如下图:
对话框外有了一层灰 {MOD}盖住了下面的界面:
![](data/attach/1904/jjkiawa2tlhepx8j3i7v8fct8ihlmkgi.jpg)
有白边,且大小不对:
![](data/attach/1904/5wn6nvt23ovmjosncdfoa3v1e5ixi94a.jpg)
对话框有背景图边缘有透明 {MOD},因此透明变成了黑边
![](data/attach/1904/y6q5txrxulua79n52t6vg27rxadx6guc.jpg)
四个角有黑点
![](data/attach/1904/tgsqksu2xkz8g5ge8307r4rs4x7jm85i.jpg)
我曾试过很多方法,达到不自己想要的对话框,后来用网上的自定义对话框解决了问题,关键是在:
final CustomDialog dialog = new CustomDialog(context, R.style.Dialog);//此处指定的对话框的样式文件中:需要设置一个透明背景:
- @android:color/transparent
后来发现其实用PopupWindow就非常简单的解决了所有问题,更方便、更简单、更快捷:
1、首先在xml布局文件里写好对话框的界面
2、定义PopupWindow对话框:
/** 创建一个PopupWindow对话框并显示 */
private void openPopupWindowDialog() {
View dialogView = View.inflate(getApplicationContext(), R.layout.activity_more_dialog, null);
dialogView.findViewById(R.id.btn_i_goto).setOnClickListener(this);
dialogView.findViewById(R.id.btn_later_on).setOnClickListener(this);
popupWindow = new PopupWindow(dialogView, -1, -1, true);//参数true设置PopupWindow能获取焦点
popupWindow.showAtLocation(root, Gravity.CENTER, 0,0);
}
/** 隐藏PopupWindow对话框并释放对象 */
public void dismissPopWindow() {
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
popupWindow = null;
}
}
示例代码下载:
http://pan.baidu.com/share/link?shareid=215501&uk=2617640990