ViewPager内の水平ScrollViewを使用しています。カスタムScrollView内のビュー上のOnClickListener
public class CustomScrollView extends HorizontalScrollView {
public CustomScrollView(Context p_context, AttributeSet p_attrs) {
super(p_context, p_attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent p_event) {
return true;
}
@Override
public boolean onTouchEvent(MotionEvent p_event) {
if (p_event.getAction() == MotionEvent.ACTION_MOVE
&& getParent() != null) {
getParent().requestDisallowInterceptTouchEvent(true);
}
return super.onTouchEvent(p_event);
}
}
onInterCeptTouchEvent
は、その内部にそのビューとすべてに任意のクリックを消費しているようだ:。ScrollViewの端が、私はSOにヒントに従って、このクラスを使用する達したときにスクロールするViewPagerを防ぐために、 Views
をScrollView
に入れると、OnClickListener
は呼び出されません。
onInterceptTouchEvent
をfalseにすると、OnClickListener
が呼び出されますが、ScrollView
はスクロールできません。
クリック可能なビューをその中に入れるにはどうすればよいですかScrollView
?
編集:Rotemの回答を実装した後、onClickListener
は機能しますが、クリックイベントだけでなく、他のもの、たとえば飛行機のようにも発動しません。どのようにこれを防ぐことができますか?
をあなただけの同じ引数でスーパーを呼び出す場合、メソッドをオーバーライドする必要はありませんあなたは[Javadocの](http://developer.android.com/を読んで確認してください – Rotem
あなたの問題を説明しているメソッドのリファレンス/アンドロイド/ビュー/ ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29) Rotemが言うように、あなたはこれを実装する必要はありません。 –