分享

弹框界面点击事件渗透到下层窗口

 逍遥的砖头 2024-05-09 发布于天津

开发中,根据需求有时一个弹框页面需要依附于当前activity,那么我们在布局中可以用Framelayout来做顶层布局。

控制弹框的可见与否来让弹框显示和消失。

但是在弹框页面中,点击空白处的事件会隔空传给下层页面对应位置的控件。这肯定不是我们想要的效果。那么原因是什么?该如何解决呢?

原因是:对于父控件Framelayout来说,所有的子控件是同级的(它不关心window是如何画的),在它收到事件后,一视同仁的分发给它的子控件。这时如果上层弹窗没有控件消耗掉当前事件,那么下层的控件收到事件就会去执行。

解决办法:

当弹窗可见时,让弹出视图去消耗掉点击或触摸事件。

childLayout.setOnTouchListener(new View.OnTouchListener() {
  @Override
  public boolean onTouch(View view, MotionEvent motionEvent) {
  return true;
  }
});

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多