ScrollView嵌套ListView滑动冲突的解决方案


话不多说,先上图.......

可以看到在Srcollview中嵌套了一个listview,我们知道如果按照常规方法,这两个控件的滑动是肯定会冲突的,会造成listview只能显示一条item

网上大部分解决方案都是让listview展示最大条数,这种方案虽然能完全展示listview的所有数据,但是itemview无法复用,如有需要大家可以自行百度,这里不讨论这种解决办法...

那么如何才能实现外面的ScrollView和里面的ListView都能滚动而互不影响呢?

查看ScrollView中有一个继承了Viewgroup父类的方法requestDisallowInterceptTouchEvent(boolean);

这个方法的详细介绍请看: android 事件处理机制之requestDisallowInterceptTouchEvent

这个方法是设置是否交出ontouch权限的,如果让外层的scrollview.requestDisallowInterceptTouchEvent(false);那么外层的onTouch权限会失去,这样里面的listview就能
拿到ontouch权限了,listView也就能滚了。
权限只有一个,如果要支持两个view都能滚动,那么当手指触到listview的时候,让外面的scrollview交出权限,当手指松开后,外面的scrollview重新获得权限。这样ok了。

因为代码量太少就不贴出具体代码了,下载一个demo跑一跑简单又明了。。。。


注:在MainActivity中生成这个内部Listview的需要将其外层的scrollview传递给该listview,同时需要按照实际情况给改listivew设置一个高度,否则无法展示出来。该listview可以嵌套多层没有滑动冲突的viewgroup

下面贴出下载链接:ScrollView嵌套ListView滑动冲突的解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值