почему можно использовать getParent () .RequestDisallowInterceptTouchEvent (true) disallow Intercepted - PullRequest
0 голосов
/ 24 мая 2018
@Override   
public boolean dispatchTouchEvent(MotionEvent ev) {  
    // why this code can be executed.
    getParent().requestDisallowInterceptTouchEvent(true); 
    return super.dispatchTouchEvent(ev);   
} 

getParent().requestDisallowInterceptTouchEvent(true) сказать родителю не перехватывать событие касания.но если родитель уже перехватывает событие касания, событие не может перейти к дочернему представлению , а дочернему представлению о том, как выполнить getParent().requestDisallowInterceptTouchEvent(true)?

1 Ответ

0 голосов
/ 19 декабря 2018

Я приведу простой пример того, почему использовать.

getParent().requestDisallowInterceptTouchEvent()

Если у меня есть ViewPager и каждая страница является ScrollableView (горизонтальная прокрутка). Теперь есть условие для прокрутки и изменениястраница ViewPager с помощью салфетки.т. е. представление будет перепутано с прокруткой или пролистыванием !!!

Так что это условие необходимо проверить в дочернем представлении (т. е. ScrollableView), один раз, если условие совпадает, использовать прокрутку и установить ниже

getParent().requestDisallowInterceptTouchEvent(true)

Поскольку вы не хотите, чтобы какой-либо родительский View (например, ViewPager) вмешивался в дочернее событие. Поэтому в основном то, что будет делать инфраструктура, не будет вызывать onintercepttouchevent () любого из родительского представления Reference

Но если вы хотите, чтобы ViewPager получил значение Event ниже

getParent().requestDisallowInterceptTouchEvent(false)

ПРИМЕЧАНИЕ: По умолчанию при каждом вызове ACTION_DOWN touch для события EventDisallowInterceptTouchEvent установлено значение false

...