mynamecsl 2018-05-31 19:42 采纳率: 58%
浏览 593
已采纳

ListView 与ViewPager的嵌套问题

ListView 中每个item均嵌套ViewPager,每个ViewPager中只包含一行GridView,滑动ViewPager时发现滑动不顺畅。请问如何解决?

  • 写回答

4条回答 默认 最新

  • 潴渚诸 2018-06-01 01:30
    关注

    viewPager和listView嵌套造成滑动冲突了,

    解决思路
    当我们使用ListView嵌套ViewPager时,会出现滑动事件的冲突,我们都知道,Viewpager自己也有滑动的功能,ListView也有滑动的功能,当我们手指放在ViewPager上来达到滑动ListView的目的时,就会发现,这种冲突问题出现了,因为我们根本无法滑动ListView,为什么呢,因为ViewPager是放在ListView上面的,所以当我们点击ViewPager时,这个事件就被最上层的ViewPager给拦截了,ListView获取不到这个事件,所以我们就要根据不同的情况来传递给ListView和ViewPager这个触摸事件.

    查看全部 https://blog.csdn.net/yanxiaosa/article/details/52595170

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • Kingsley_Wu 2018-06-01 00:07
    关注

    现在是viewPager和listView嵌套造成滑动冲突了,你需要在viewPager滑动的时候取消掉list View的滑动监听。

    评论
  • bt侠 2018-06-01 01:55
    关注

    百度外部拦截法和内部拦截法,解决滑动冲突的2个比较好的方法.你这里其实也用不到这2个拦截法,在viewpager的手势监听里面判断单次滑动的X是否大于Y,如果大于那么消费所有的事件,Listview就不会再滑动

    评论
  • Kawhi& 2018-06-01 03:09
    关注

    我们重写一个类来继承ViewPager,重写public boolean dispatchTouchEvent(MotionEvent ev) 这个方法,这个方法是用来进行事件的分发;在这个方法中来判断手指的动作,我们记录手指放下的位置,当手指移动时,我们判断手指滑动的距离,当在x轴上的滑动距离大于y轴上的滑动距离时,这个时候应该滑动事件就应该传递给ViewPager来处理,这个时候调用:getParent().requestDisallowInterceptTouchEvent(boolean disallowIntercept);这个方法,参数设置为true,这就是ViewPager自行处理滑动事件,而不是传递给ListView来处理滑动事件,当在y轴上的滑动距离大于x轴上的滑动距离时,这个时候,再次调

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Latex算法流程图行号自定义
  • ¥15 关于#python#的问题:我在自己的电脑上运行起来总是报错,希望能给我一个详细的教程,(开发工具-github)
  • ¥40 基于51单片机实现球赛计分器功能
  • ¥15 cs2游戏画面卡住,应用程序sid与指挥者sid不匹配
  • ¥15 实验七:Pandas要有实验截图和代码
  • ¥15 TypeError: Make sure that the iterable only contains strings.
  • ¥35 电脑放图书馆,这是被黑了吗
  • ¥15 等高线中数据取消科学计数法
  • ¥15 Qt播放10路ffmpeg 视频流
  • ¥15 如何利用闲置机械硬盘变现