すでにxmlで定義されているMyHorizontalScrollViewと動的に追加したいくつかのMyHorizontalScrollViewを同期させたく下記のようなコードを書いてみました。
動的に生成したMyHorizontalScrollViewを下のメソッドに投げても同期せずに困っています。
どこを直せばうまくいくでしょうか?
よろしくお願いします。
import android.content.Context; import android.util.AttributeSet; import android.widget.HorizontalScrollView; public class MyHorizontalScrollView extends HorizontalScrollView { private int last = 0; private ScrollViewListener scrollViewListener = null; public interface ScrollViewListener { void onScrollChanged(int x, int y, int oldX, int oldY); } public MyHorizontalScrollView(Context context) { super(context); } public MyHorizontalScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public MyHorizontalScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void setOnScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } @Override protected void onScrollChanged(int x, int y, int oldX, int oldY) { super.onScrollChanged(x, y, oldX, oldY); if (scrollViewListener == null || last == y || y < 0 || oldY < 0) { return; } last = y; scrollViewListener.onScrollChanged(x,y,oldX,oldY); } } コード
public void setScrollView(final MyHorizontalScrollView scrollView2){ final MyHorizontalScrollView scrollView1 = (MyHorizontalScrollView)findViewById(R.id.scrollView1); scrollView1.setOnScrollViewListener(new MyHorizontalScrollView.ScrollViewListener(){ @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public void onScrollChanged(int x, int y, int oldX, int oldY) { int horizontal = x - oldX; // 横軸の移動量 int vertical = y - oldY; // 縦軸の移動量 scrollView2.scrollTo(x,y); } }); scrollView2.setOnScrollViewListener(new MyHorizontalScrollView.ScrollViewListener(){ @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public void onScrollChanged(int x, int y, int oldX, int oldY) { int horizontal = x - oldX; // 横軸の移動量 int vertical = y - oldY; // 縦軸の移動量 scrollView1.scrollTo(x,y); } }); } コード
あなたの回答
tips
プレビュー