就是我想做一个表格,然后发现两个HorizontalScrollView不是很同步hhsv.setOnScrollChangeListener(new View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                hsv.scrollTo(scrollX,scrollY);
            }
        });
        hsv.setOnScrollChangeListener(new View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                hhsv.scrollTo(scrollX,scrollY);
            }
        });用的这种方法,是不是应该重写touchevent之类的会比较同步
还有,我这样弄表格可以么,有没有更好的方法

解决方案 »

  1.   

    表格使用recyclerView做效果好些。
      

  2.   

    用的就是recyclerView啊
      

  3.   

    只需要一个HorizontalScrollView加上recyclerView就行了,这么多嵌套没意义,每行都是一个item就行了。
      

  4.   

    监听是回调,你在回调中处理,当然同步不了了,因为一个已经滚动了然后才回调方法接着滚动另外一个。
    可以重写onTouchEvent事件,在那里面监听触摸滑动事件,然后同时调用scroll滚动
      

  5.   

    谢谢,试了一下确实完美同步,可是惯性滑动不知道怎么解决@Override
        public boolean onTouchEvent(MotionEvent ev) {
            boolean b = super.onTouchEvent(ev);
            shsv.scrollTo(getScrollX(), 0);
            return b;
        }
      

  6.   

    谢谢,试了一下确实完美同步,可是惯性滑动不知道怎么解决@Override
        public boolean onTouchEvent(MotionEvent ev) {
            boolean b = super.onTouchEvent(ev);
            shsv.scrollTo(getScrollX(), 0);
            return b;
        }

    你不能直接在 onTouchEvent接收所有的事件呀,这样所有的触摸事件都会造成滚动  你应该在MotionEvent.ACTION_MOVE的时候,move了多少就滚动多少 例如这样:
      @Override
        public boolean onTouchEvent(MotionEvent event) {
            switch (event.getAction()){
                case MotionEvent.ACTION_DOWN:
                    记录下触摸按下的时候的位置
                    break;
                case MotionEvent.ACTION_MOVE:
                    与触摸按下时候的位置比较,变化多少就滑动多少
                    break;
                case MotionEvent.ACTION_UP:
                    滑动停止
                    break;
            }
            return super.onTouchEvent(event);
        }