android两个ListView同步滚动

 

我在网上看到大多数专家讲解的都是设置setOnScrollListener滑动监听,但是个人感觉设置滑动监听比较麻烦,感觉使用事件分发来做比较简单;

 

实现思路:首先来线下整体布局,是使用一个横向的线性布局里面放了两个ListView,使用权重让两个ListView平分屏幕的宽。

如果想使用View的事件分发,必须自定义这个View,这里面实现起来也非常简单,只是自定义一个线性布局继承系统的线性布局;

我这里面使用的是线性布局,实际项目中使用什么布局都可以,这里面只是方便两个ListView设置权重;

实现自定义布局在这个类中重写onInterceptTouchEvent();作用就是把事件中断掉,不让ListView得到事件;

 

    /**
     * 判断是否需要中断事件的传递
     * 默认返回false 意思是,不中断
     * 返回true 意思是,中断
     */
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return true;
    }


如果只写这个方法运行结果是两个ListView跟进没办法滑动,下面还需要重写onTouchEvent()方法,在这个方法中把事件同时交给两个ListView,作用就是当你滑动的时候两个ListView都能收到滑动事件;

 

 

 public boolean onTouchEvent(MotionEvent event) {

        //获得listview的个数
        int count=getChildCount();

        for (int i = 0; i < count; i++) {
            View child = getChildAt(i);
            try {
                child.dispatchTouchEvent(event);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return true;
    }


好了,只需要两个方法,十行代码搞定,所以感觉比设置滑动监听要简单;

 

源码下载地址

 

   

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值