LoginSignup
5
5

More than 5 years have passed since last update.

ScrollView内にNumberPickerを配置したい

Posted at

素直に配置するとタッチイベントが競合して、NumberPickerが動作してくれないです。
なので、NumberPickerでタッチイベントを検出したら親View(ここではScrollView)へのイベント伝搬を無効にするとよさそうです。

…みたいなことが、スタックオーバーフローかどこかに書いてたのだけど場所忘れちゃったのでメモ。

-

NumberPickerを継承した独自のViewをつくります

ScrollableNumberPicker.java
public class ScrollableNumberPicker extends NumberPicker {
    public ScrollableNumberPicker(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setOnTouchListener(new View.OnTouchListener(View view, MotionEvent motionEvent) {
            int action = motionEvent.getAction();
            switch (action) {
                case MotionEvent.ACTION_DOWN:
            view.getParent().requestDisallowInterceptTouchEvent(true);
            break;
          case MotionEvent.ACTION_UP:
            view.getParent().requestDisallowInterceptTouchEvent(false);
            break;
            }
            return false;
        }
    }
}

こんな感じ。

requestDisallowInterceptTouchEvent
ありがてぇ。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5