私はHorizontalScrollView
別の内部にあるアンドロイドでUIを設計していHorizontalScrollView
ます。しかし、子供HorizontalScrollView
は働かない。
HorizontalScrollView
child でジェスチャが行われるたびに親を無効にすることは可能ですかHorizontalScrollView
? これは難しいように聞こえますが、これを UI に実装する必要があります。
私はHorizontalScrollView
別の内部にあるアンドロイドでUIを設計していHorizontalScrollView
ます。しかし、子供HorizontalScrollView
は働かない。
HorizontalScrollView
child でジェスチャが行われるたびに親を無効にすることは可能ですかHorizontalScrollView
? これは難しいように聞こえますが、これを UI に実装する必要があります。
一般に、スクロールする別のものの中にスクロールするものを持つことは、悪い考えです。Google は推奨していません。
これは、Android がスクロール イベントを処理する方法によるものです。と呼ばれるメソッドがあり、タッチ イベントをインターセプトするかdispatchTouchEvent()
、onInterceptTouchEvent()
その子に渡すかを決定します。スクロール可能なビューの場合、常に「スワイプ」の動きをインターセプトします。したがって、あなたの子供には決して行きません。
これには回避策がありますが、面倒でほとんどの場合うまくいきません。この状況を回避するには、UI を調整することをお勧めします。
これらのスレッドで議論されているいくつかの潜在的な回避策を次に示します。
ScrollView の ListView の潜在的な回避策
次のように onInterceptTouchEvent をオーバーライドするのはどうですか。
public class EmbeddedHorizontalScrollView extends HorizontalScrollView {
public EmbeddedHorizontalScrollView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
// tell parent and it's ancestors to skip touch events
this.getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
this.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.onInterceptTouchEvent(ev);
}
}
そこで、horisontalScrollView 内の LinearLayout 内で ScrollView を使用しました。主な問題は、Y スワイプが検出されたときに、HorizontalScrollView に OnInterceptTouchEvent を実装して、子 ScrollView に TouchEvent を渡すことでした。そして、それはうまく機能し、興味をそそられます。はい、Scrollview または listView を別の Scrollview に直接配置するべきではありませんが、Linearlayout を ScrollView に配置してから、他の Scrollable オブジェクトを配置することはできます。