底部的fragment可以点击

来源:互联网 发布:网络与新媒体学科 编辑:程序博客网 时间:2024/05/01 23:27

现象:

一个Fragment,层叠在另外一个Fragment或者Activity之上,此Fragment中有一些空白区域,也即Widget之外的空白区域,当点击这些空白区域的时候发现这个Fragment下面的Fragment或者Activity中的View收到了事件并且响应了点击事件。

原因:

Fragment的本质就是一个View布局的管理器,当Fragment attach到Activity时,其实就是把Fragment.onCreateView()返回的View,替换掉(如果是用replace)FragmentTransaction#replace中指定的View,或者添加到(如果是add)FragmentTransaction.add()中指定的ViewGroup里面。

当我们以层叠方式显示多个Fragment时,通常的做法就是弄一个FrameLayout,然后每次把Fragment add到此布局。因此,这时Activity的页面布局树实际上就是一个FrameLayout里面包含几个View。

所以,当点击上面Fragment的空白区域时,如果事件没被吃掉,就会向下传递。

如何破解:

在Fragment的根布局加上一个clickable=true,这会让根布局把点击事件吃掉,以防止事件会继续传递下去,造成上面的情况。

0 0
原创粉丝点击