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
の は呼び出されません。
onInterceptTouchEvent
false を返すとOnClickListener
、 が呼び出されますが、ScrollView
スクロールできません。
その中にクリック可能なビューを配置するにはどうすればよいScrollView
ですか?
編集:Rotemの答えを実装した後、onClickListener
動作しますが、クリックイベントだけでなく、フリングなどの他のイベントでも発生します。どうすればこれを防ぐことができますか?