2015-02-25 2 views
0

Я понимаю, что распространение событий Android происходит от родительского к ребенку, то есть оно начинается с самого внешнего элемента и внутрь оттуда. Мой вопрос в том, почему, когда я пытаюсь прокрутить по вертикали listview, который находится внутри viewpager, который обернут в scrollview, перемещение listview перемещается, а не viewpager. Хорошо, позвольте мне перефразировать: Я пытаюсь создать меню, которое появляется, когда пользователь опускает вид пейджер, позвольте мне сделать это еще более ясный:Распространение событий касания Android

Scrollview Моего заказом Меню ViewPager (с тремя фрагментами , у всех из них есть lisview) ListView

Я понимаю, что то, что я пытаюсь сделать, немного странно, но неся со мной только на этот раз. :)

Что я могу сделать, чтобы «отключить» на мгновение прокрутку списка просмотров.

Благодаря

+0

Отключить перехватывать события прикосновения, requestDisallowInterceptTouchEvent() – pskink

+0

Для всех, кто находит, здесь действительно полезное объяснение того, что на самом деле происходит: http://codetheory.in/understanding-android-input-touch-events/ – MirroredFate

ответ

3

Кажется, вы должны переопределить событие прокрутки. Хорошая веб-страница - Disable scrolling in Android ListView. Главным образом посмотрите на dispatchTouchEvent. Этот фрагмент:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    final int actionMasked = ev.getActionMasked() & MotionEvent.ACTION_MASK; 
    if (actionMasked == MotionEvent.ACTION_MOVE) { 
     // Ignore move events 
     return true; 
    } 

Лично я желаю, чтобы это было проще, чем отключение метода прокрутки.

+0

делает совершенным смысл. это и сделал трюк. Странно, что это произошло, поскольку в документации явно указано, что события перемещаются от родителя к дочернему. Тем не менее, спасибо за ваш обходной путь! :) – feresr

Смежные вопросы