就是我想做一个表格,然后发现两个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之类的会比较同步
还有,我这样弄表格可以么,有没有更好的方法
@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之类的会比较同步
还有,我这样弄表格可以么,有没有更好的方法
可以重写onTouchEvent事件,在那里面监听触摸滑动事件,然后同时调用scroll滚动
public boolean onTouchEvent(MotionEvent ev) {
boolean b = super.onTouchEvent(ev);
shsv.scrollTo(getScrollX(), 0);
return b;
}
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);
}