当前位置: 代码迷 >> Android >> 水平联滚动如何实现
  详细解决方案

水平联滚动如何实现

热度:14   发布时间:2016-04-28 01:07:39.0
水平联滚动怎么实现?
本帖最后由 zpq19870824 于 2015-05-06 16:47:00 编辑
我想实现一个功能上面一个布局是ScrollView里面嵌套一个HorizontalScrollView实现水平滚动  在这个布局下面也有一个ScrollView里面嵌套一个HorizontalScrollView的布局 实现上下左右滚动 我现在想实现的是 当上面的布局水平滚动的时候 下面的也跟着水平滚动 或者 下面的水平滚动 上面的也跟着水平滚动 就是实现联动的效果 请问怎么实现 





package com.car;

import android.app.Activity;
import android.os.Bundle;

/**
 * 仿写汽车之家首页效果
 */
public class MainActivity extends Activity implements ScrollViewListener, HorizontalScrollViewListener {

    private MyScrollView scrollView1 = null;

    private MyScrollView scrollView2 = null;
    private MyScrollView scrollView3 = null;
    private MyHorizontalScrollView horizontalScrollView1 = null;
    private MyHorizontalScrollView horizontalScrollView2 = null;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        scrollView1 = (MyScrollView) findViewById(R.id.scrollview1);

        scrollView1.setScrollViewListener(this);

        scrollView2 = (MyScrollView) findViewById(R.id.scrollview2);
        scrollView3 = (MyScrollView) findViewById(R.id.scrollview3);

        horizontalScrollView1 = (MyHorizontalScrollView) findViewById(R.id.MyHorizontalScrollView1);
        horizontalScrollView2 = (MyHorizontalScrollView) findViewById(R.id.MyHorizontalScrollView2);

        scrollView2.setScrollViewListener(this);

    }

    @Override
    public void onScrollChanged(MyScrollView scrollView, int x, int y, int oldx, int oldy) {
        if (scrollView == scrollView1) {
            scrollView2.scrollTo(x, y);
        } else if (scrollView == scrollView2) {
            scrollView1.scrollTo(x, y);
            scrollView3.scrollTo(x,y);
        }
    }

    @Override
    public void onScrollChanged(MyHorizontalScrollView scrollView, int x, int y, int oldx, int oldy) {
        if(scrollView == horizontalScrollView1){
            horizontalScrollView2.scrollTo(x,y);
        }else if(scrollView == horizontalScrollView2){
            horizontalScrollView1.scrollTo(x,y);
        }
    }
}


现竖直滚动可以联动   但是水平的不能
------解决思路----------------------
把所有的HorizontalScrollView加入到一个集合里面,然后监控手势滑动的参数,然后让集合里面的HorizontalScrollView跟着一起滚动。可以看下控件的scrollBy(),scrollTo()这些方法。 

------解决思路----------------------
如果你是平行滑动的话,为什么不把两个横向的布局放到一个scroll里呢?如果不是平行滑动,就根据你自己的要求计算滑动尺度
  相关解决方案