次のシナリオを実装する必要があります。
ここでは、2 つの horizontalScrollViews を持っています。上部の scrollView はメイン メニューで、下部の scrollView はサブメニューです。
メインメニューをスクロールすると、中央の矢印の下にあるメニューが下のスクロールビューにサブメニューを表示し、下のスクロールビューから、中央の矢印の下にあるサブメニューがそのサブメニューの画面を表示します。
ここに私の要件があります:
私は HorizontalScrollViews と ViewFlipper を使用して実装しましたが、動作しますが、速くスクロールするときではなく、ゆっくりとスクロールするときにのみ正しい結果が得られます。
ACTION_UPイベントでonTouch()メソッドを使用したので、画面から指を離すと、その時点でgetScrollX()の位置が表示されますが、ここではスクロールが終了/停止するときにgetScrollX()の位置が必要です。
ここに私のコードがあります:-
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.mHorizontalScrollViewMain:
if (event.getAction() == KeyEvent.ACTION_UP) {
Log.d("test", " " + hsvUpperTab.getScrollX() + " , "+ mViewFlipper.getChildCount());
getUpperTabScrolled(hsvUpperTab.getScrollX());
}
break;
case R.id.mHorizontalScrollViewSub:
if (event.getAction() == KeyEvent.ACTION_UP) {
Log.d("test1", " " + hsvLowerTab.getScrollX());
getLowerTabScrolled(hsvLowerTab.getScrollX());
}
default:
break;
}
return false;
}