Проблема в том, что ListView
(или, точнее, его родитель AbsListView
) реализует onInterceptTouchEvent
, и, следовательно, ListView
может перехватывать все события касания, как только считает, что он в лучшем положении для их обработки. *
Этого можно избежать, позвонив по номеру requestDisallowInterceptTouchEvent
, например, путем подкласса HorizontalScrollView
и в его dispatchTouchEvent
:
public boolean dispatchTouchEvent(MotionEvent ev)
{
boolean ret = super.dispatchTouchEvent(ev);
if(ret)
{
requestDisallowInterceptTouchEvent(true);
}
return ret;
}
Он нуждается в некотором уточнении (как, например, вызовите requestDisallowInterceptTouchEvent
, если горизонтальный компонент больше, чем вертикальный), поскольку теперь он едва ли позволяет ListView
получить контроль.