PopupWindow做下拉筛选框时的尴尬

问题:

使用popupWindow做下拉筛选框,往往需要做点击外部消失的效果,
错误示范:

popupWindow.setBackgroundDrawable(new ColorDrawable(maskColor));
popupWindow.setOutsideTouchable(true);

做上面的设置后,点击外部消失的效果达到了,但是在显示popupWindow的状态下点击触发popupWindow弹窗的按钮时,弹窗会瞬间消失再显示,极不和谐。

正确的处理方式:

popupWindow.setBackgroundDrawable(new ColorDrawable(maskColor));
popupWindow.setOutsideTouchable(true);
popupWindow.setTouchInterceptor((v, event) -> {
  Rect tabRect = new Rect();
  //menuView是触发popupWindow弹窗的布局
  menuView.getGlobalVisibleRect(tabRect);
  if (tabRect.contains((int)event.getRawX(),(int)event.getRawY())) {
    v.performClick();
      //返回true表示拦截touch事件,说明你在此处消费掉touch事件
      return true;
  }
  //返回false表示你没处理touch事件,事件会继续往下分发
  return false;
});

当用户点击触发popupWindow的按钮时,消费掉点击事件,popupWindow就不会消失再显示了;自己在点击事件里做好判断逻辑就可以了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。