Fragment点击穿透
我目前项目的首页是一个MainActivity包含5个Fragment,通过hide&show来进行tab切换。在刚开始就遇到了一个很恶心的问题:当前Fragment页,点击能跳转到其他Fragment页的内容。具体来说就是不应该被点击的位置,出现了其它Fragment页面对应位置的点击事件。这个问题不是100%的复现的,而且有些机型不会出现,有些又很频繁
这个问题实际上是点击事件分发的问题,当多个Fragment添加进Fragment栈时,栈底的Fragment的点击事件在上层Fragment出现后仍然有效。具体的解决方法有三种,可以点进帖子中查看。
在我的项目中由于使用Fragment比较多,所以我使用了第二种方案,在BaseFragment中全局添加了view.setClickable(true);
问题再也没复现过了。
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(this.getLayoutId(), container, false);
rootView.setClickable(true); //把View的click属性设为true,截断点击时间段扩散
return super.onCreateView(inflater, container, savedInstanceState);
}