Android通过hide&show管理多Fragment出现重叠以及点击穿透的解决之道

本文主要介绍了在Android应用中,通过hide&show管理多个Fragment时遇到的点击穿透和界面重叠问题。针对点击穿透问题,作者提出在BaseFragment中全局处理,有效避免了事件分发错误。对于Fragment重叠,原因是异常销毁后恢复时未正确处理,解决方案包括检查`android:fitsSystemWindows="true"`属性以及在MainActivity中保存和恢复Fragment状态。文章还分享了详细的代码实现,提供了解决这类问题的有效途径。
摘要由CSDN通过智能技术生成

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);
}
Fragment重叠
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值