ViewPager 内に水平 ScrollView があります。ScrollView の最後に達したときに ViewPager がスクロールされないようにするために、SO のヒントに従ってこのクラスを使用します。
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ビューへのクリックとその中のすべてを消費するようです。私がそれに入れたときViews、ScrollView彼らOnClickListenerの は呼び出されません。
onInterceptTouchEventfalse を返すとOnClickListener、 が呼び出されますが、ScrollViewスクロールできません。
その中にクリック可能なビューを配置するにはどうすればよいScrollViewですか?
編集:Rotemの答えを実装した後、onClickListener動作しますが、クリックイベントだけでなく、フリングなどの他のイベントでも発生します。どうすればこれを防ぐことができますか?