私は現在、スクロールビュー(垂直スクロールビューを意味します。スクロールビューの子相対レイアウトのID:category01layout、category02layout、...)を子として持つHorizontalscrollview(ID:ordermenu)の水平スクロールを無効にするために取り組んでいます。
XML では次のようになります。
HorizontalScrollView(ordermenu)
- LinearLayout
- ScrollView
- RelativeLayout(category01layout)
- ScrollView
- RelativeLayout(category02layout)
...
- ScrollView
- RelativeLayout(category08layout)
画面には一度に 1 つのカテゴリ レイアウトが表示され、前/次ボタンを押すと、 horizontalscrollview.smoothScrollTo() を設定してカテゴリ レイアウトを変更します。
そのため、アプリを実行してスクロールすると、指は HorizontalScrollView と ScrollView の両方をスクロールします。しかし、指でこれら 2 つの両方が onScrollChanged をリッスンするようにしたくありません。私はScrollViewが私の指を聞いて「垂直方向にのみスクロールする」ようにしたいだけです。これを行う方法がわからないので、正確な垂直方向にスクロールする場合にのみ、ScrollView はスムーズに垂直方向にスクロールします。それ以外の場合、私の指は HorizontalScrollView もスクロールしますが、これは予想外でした。
では、水平スクロールを無効にして垂直スクロールのみを有効にする方法はありますか?
以前にこの方法を使用しました (HorizontalScrollView を拡張するクラスを作成します)
@Override
protected void onScrollChanged(int x, int y, intoldx, intoldy){
if(Math.abs(x - oldx) <= 50){
mScrollable = false;
}
else {
mScrollable = false;
}
return;
}
しかし、これは UI に多くの負担をもたらし、垂直スクロールの ScrollView が硬すぎて遅くなりすぎました。ですから、これ以外の方法を教えてください。
前もって感謝します。