关于fragment下popupwindow点击外侧不能取消的且可点击外部控件的问题
3条回答 默认 最新
- Light2333 2016-08-29 02:44关注
之前被这个问题困扰了很久,百度了很多例子好多用了还是没效果,继续奋斗了好久才找到一个适合的方法,看有的还说可以重写OnTouchListener(),本人觉得太麻烦,就用了另外一种简单的方法,很简单照着改就好了,直接贴代码
//获取popupwindow布局文件
View contentview = LayoutInflater.from(getContext()).inflate(R.layout.mine_login_popupwindow,null);
//实例化popupwindow并设置popupwindow显示样式
final PopupWindow popupwindow =new PopupWindow(contentview,ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
//在popupwindow显示之后使fragment上其他控件失去焦点,不可点击
popupwindow.setFocusable(true);
//设置popupwindow显示的位置
popupwindow.showAtLocation(contentview, Gravity.CENTER,0,0);
//设置点击popupwindow外的其他位置也可取消popupwindow
popupwindow.setOutsideTouchable(true);
//这是popupwindow的背景,这个是必须设置的且不能为null
popupwindow.setBackgroundDrawable(new BitmapDrawable());
//设置整个控件的触摸事件,并使popupwindow消失
contentview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
popupwindow.dismiss();
return false;
}
});
就这么多了,这是我个人感觉最方便的一种方法,如果建议请留言~解决 3无用
悬赏问题
- ¥30 STM32 INMP441无法读取数据
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境