android popWindows 点击别处禁止消失
时间: 2023-07-22 13:43:19 浏览: 63
在Android中,弹出式窗口通常使用PopupWindow实现。如果您想实现点击别处窗口不能关闭的效果,可以在PopupWindow中添加一个外部视图,并在外部视图上设置一个点击事件,当点击外部视图时,不关闭PopupWindow。
具体实现方法如下:
1. 在PopupWindow中添加一个外部视图,可以使用FrameLayout等布局容器来包含PopupWindow的内容视图和外部视图:
```
FrameLayout contentView = new FrameLayout(context);
contentView.addView(popupContentView);
contentView.addView(externalView);
```
2. 在外部视图上设置一个点击事件,当点击外部视图时,不关闭PopupWindow:
```
externalView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do nothing
}
});
```
这样,当用户点击PopupWindow以外的区域时,点击事件会被外部视图捕获,不会触发PopupWindow的关闭事件,从而实现了点击别处窗口不能关闭的效果。
相关问题
android PopWindows 点击别处消失 不消失
如果你希望PopWindows在点击别处时不消失,可以做以下修改:
在第一步中,给根View添加点击事件的代码可以不添加,这样点击根View时就不会触发PopWindows的dismiss方法:
```
// 获取Activity的根View
View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
```
在第二步中,重写PopWindows的onTouchEvent方法时,不做任何处理即可:
```
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
```
这样就可以实现PopWindows点击别处时不消失的效果了。
android PopWindows 点击别处消失
在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点击别处消失的效果了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)