Android中点击PopupWindow周围无法关闭弹窗
时间: 2024-01-04 13:15:14 浏览: 122
android popupwindow UI进阶之弹窗的使用
在Android中,如果你想要点击PopupWindow周围关闭弹窗,可以通过以下几个步骤实现:
1.创建一个透明的背景层,并添加点击事件,当用户点击背景层时,关闭PopupWindow。
2.在PopupWindow的showAsDropDown()方法中,设置setBackgroundDrawable(),将PopupWindow的背景设置为透明,这样点击背景层时,点击事件才能被响应。
下面是示例代码:
```java
// 创建透明的背景层
View backgroundView = new View(context);
backgroundView.setBackgroundColor(Color.parseColor("#80000000"));
backgroundView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
// 创建PopupWindow
View contentView = LayoutInflater.from(context).inflate(R.layout.popup_layout, null);
PopupWindow popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupWindow.setFocusable(true); // 设置PopupWindow可以获取焦点
popupWindow.setOutsideTouchable(true); // 设置PopupWindow外部可点击
popupWindow.showAsDropDown(anchorView);
// 添加背景层
ViewGroup rootView = (ViewGroup) ((Activity) context).getWindow().getDecorView().findViewById(android.R.id.content);
rootView.addView(backgroundView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
```
这样,当用户点击PopupWindow周围的背景层时,就可以关闭弹窗了。
阅读全文