ScrollView com vista de crianças, como interceptar rolagem condicionalmente
Eu tenho um containerViewGroup
vamos chamá-lotela dentro de umScrollView
. Esta exibição de contêiner hospeda vários outrosViews
vamos chamá-loswidgets, e alguns deles estão interessados em impedir que o ScrollView role e use o MotionEvent em si (por exemplo, uma imagem pannable)
Não consigo descobrir a estratégia correta de interceptação de eventos a ser usada.ScrollView
sempre processa o evento antes dos filhos, ou os filhos processam o evento, masscrollview
está desabilitado.
Eu li sobre a emissãogetParent().requestDisableInterceptTouchEvent()
nas exibições filho, se essa exibição quiser capturar o evento, masonTouchEvent
não é chamado, eu suponho porqueScrollView
engoliu o evento de antemão. Eu acho que o fato de eu ter 2 níveis de camadas (container + widgets) impede que isso funcione, eu suponho que o containerViewGroup
tem que desempenhar um papel importante aqui, mas não consigo descobrir qual ...
Eu posso saber, noScrollView's
onInterceptTouchEvent
nível, qual widget no contêinerviewGroup
foi tocado para decidir se eu deveria interceptar ou não?
ou...
Como as camadas 'widget' podemnoViewGroup
receba o evento antesScrollView
para que eu possa ligargetParent().onRequestDisableInterceptTouch()
... ou égetParent().getParent().onRequestDisableInterceptTouch()
?
desde já, obrigado
Eu li questões relacionadas, mas sem sorte ...Lidar com eventos de toque no ScrollView Android