开发中,根据需求有时一个弹框页面需要依附于当前activity,那么我们在布局中可以用Framelayout来做顶层布局。 控制弹框的可见与否来让弹框显示和消失。 但是在弹框页面中,点击空白处的事件会隔空传给下层页面对应位置的控件。这肯定不是我们想要的效果。那么原因是什么?该如何解决呢? 原因是:对于父控件Framelayout来说,所有的子控件是同级的(它不关心window是如何画的),在它收到事件后,一视同仁的分发给它的子控件。这时如果上层弹窗没有控件消耗掉当前事件,那么下层的控件收到事件就会去执行。 解决办法: 当弹窗可见时,让弹出视图去消耗掉点击或触摸事件。 childLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { return true; } }); |
|
来自: 逍遥的砖头 > 《android开发》