ScrollViewにカスタムビューを配置したところ、カスタムビューのタッチイベントをScrollViewに奪われてしまいました。
こんなときはViewParent#requestDisallowInterceptTouchEvent(boolean)を呼び出せば、ScrollViewにタッチイベントを奪われません。
public class HogeView extends View {
//...
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getActionMasked();
if (action == MotionEvent.ACTION_DOWN) {
getParent().requestDisallowInterceptTouchEvent(true);
//...
return true;
}
//...
return false;
}
}
※ViewクラスはViewParentインターフェースを実装していませんが、View#getParentでViewParentを取得できます。
※ViewGroupクラスはViewParentインターフェースを実装しているので、例えばFrameLayoutなどのViewGroupを継承しているクラスはgetParentしなくて良いです。