弹出PopupWindow后 空白处点击事件
时间: 2024-01-04 22:30:24 浏览: 112
Android Animation实战之屏幕底部弹出PopupWindow
要实现点击PopupWindow以外的空白处,使PopupWindow消失,你可以在显示PopupWindow时,给背景遮罩视图设置点击事件。当点击背景遮罩时,你可以关闭PopupWindow。
在上面提到的代码中,你可以将`showPopupWindow()`方法修改如下:
```java
private void showPopupWindow() {
// 创建PopupWindow视图
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = inflater.inflate(R.layout.popup_window, null);
// 设置PopupWindow的属性
popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// 显示PopupWindow
popupWindow.showAtLocation(findViewById(R.id.main_layout), Gravity.CENTER, 0, 0);
// 设置背景遮罩点击事件
backgroundView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
}
}
});
}
```
这样,当点击背景遮罩时,会隐藏PopupWindow。请确保`backgroundView`是在`showPopupWindow()`方法之前初始化的。这样,当你点击空白处时,PopupWindow将会被关闭。
记得在布局文件中为背景遮罩视图设置合适的宽高和透明背景,参考上面的代码示例。
阅读全文