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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答 默认 最新

  • bdmh bdmh 2016-08-29 02:38

    morePopwin.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    morePopwin.setOutsideTouchable(true);
    加上两句话

    点赞 4 评论 复制链接分享
  • Light2333 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;
    }
    });
    就这么多了,这是我个人感觉最方便的一种方法,如果建议请留言~

    点赞 2 评论 复制链接分享
  • Mr_dsw Andoter 2016-08-29 05:37

    Popwin.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    Popwin.setOutsideTouchable(true);
    android中的popwindow设置比较特殊,必须设置背景。

    点赞 评论 复制链接分享

相关推荐