Android DrawerLayout使用踩坑(DrawerLayout和Banner滑动冲突的解决方法)

文章讲述了在使用DrawerLayout时,由于NavigationView的位置导致手势操作问题。解决方法包括调整NavigationView的布局位置,确保它是DrawerLayout的最后一个子View,并提到了与Banner滑动的冲突处理。
摘要由CSDN通过智能技术生成

1.DrawerLayout响应打开抽屉的手势不响应关闭抽屉的手势动作

在使用DrawerLayout时发现手势触发打开时正常关闭出现问题,问题原理是ViewDragHelper当中的checkTouchSlop方法,检查DrawerLayout布局中的第一个子最后一个子view是否是NavigationView。是就在processTouchEvent方法中执行刷新界面的方法。如果没有检查到子view是NavigationView那么就不会触发关闭的视图更新。

如下是问题代码,我们知道Android中view是从上到下去按顺序一层一层执行绘制,当把navigationView写入第一层导致checkTouchSlop方法中mCallback.getViewHorizontalDragRange(child)以及mCallback.getViewVerticalDragRange(child)这两行代码的child参数获取到的是xml布局的中DrawerLayout的最后一个子view。也就是ConstraintLayout,所以导致布局刷新失败。

修改之后的代码应该把NavigationView作为DrawerLayout的最后一个子View去进行添加

如上是修改之后的代码,可以进行正常的手势响应。

2.DrawerLayout和Banner滑动冲突的解决方法

就是将DrawerLayout设置为根布局,Fragment中或者Activity中的Banner为子布局,避免将DrawerLayout作为Fargment或者Activity中的同级布局出现,否则DrawerLayout中的OnTouchEvent事件将会响应将手势动作消费掉

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值