2014-09-17 6 views
1

Можно ли удалить событие прокрутки для макета, находящегося внутри ScrollView?Удалить событие прокрутки для дочернего элемента ScrollView

У меня следующая иерархия макета:

Scrollview

    RelativeLayout

        LinearLayout

            TableLayout

        RelativeLayout

            GestureOverlayView

Я хочу, чтобы удалить событие прокрутки для RelativeLayout, который содержит GestureOverlayView, так что, когда пользователь рисует вертикальную линию, событие не перехватывается как свиток, а как рисунок.

ответ

2

Я не знаю, что вы все еще нуждаетесь в этом или нет, но вот ответ, который я тестировал. это как предотвратить родительскую View от кражи TouchEvent из точки зрения ребенка:

childView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (v.getId() == R.id.childView) { 
       v.getParent().requestDisallowInterceptTouchEvent(true); 
       switch (event.getAction() & MotionEvent.ACTION_MASK) { 
        case MotionEvent.ACTION_UP: 
         v.getParent().requestDisallowInterceptTouchEvent(false); 
         break; 
       } 
      } 

      return false; 
     } 
    }); 

вы можете пойти в родителях:

v.getParent().getParent .... 
Смежные вопросы