android PopWindows 点击别处消失
时间: 2023-07-22 15:34:02 浏览: 61
在Android中,可以通过以下步骤实现PopWindows点击别处消失的效果:
1. 在PopWindows弹出时,获取当前Activity的根View,给它添加一个点击事件。
```
// 获取Activity的根View
View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
// 给根View添加点击事件
rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 隐藏PopWindows
popupWindow.dismiss();
}
});
```
2. 在PopWindows中重写onTouchEvent方法,防止点击PopWindows本身时触发根View的点击事件。
```
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
// 隐藏PopWindows
popupWindow.dismiss();
return true;
}
return false;
}
});
```
在这段代码中,我们通过setTouchInterceptor方法给PopWindows添加了一个触摸事件监听器,当用户在PopWindows外部点击时,会触发MotionEvent.ACTION_OUTSIDE事件,我们在这个事件中隐藏PopWindows,并返回true表示已经处理了这个事件,不需要继续传递给下一个监听器。
这样就可以实现PopWindows点击别处消失的效果了。