Light2333 2016-08-29 02:29 采纳率: 0%
浏览 3731

关于fragment下popupwindow点击外侧不能取消的且可点击外部控件的问题

关于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;
    }
    });
    就这么多了,这是我个人感觉最方便的一种方法,如果建议请留言~

    评论

报告相同问题?

悬赏问题

  • ¥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驱动开发环境