2013-07-18 6 views
4

Как я могу реализовать пользовательские onInterceptTouchEvent() в ListView, которые дают приоритет прокрутив ребенок в ListView и, как только они сделали их прокрутку, отдать его обратно в ListView? Я хочу отдать приоритет внутренним взглядам.Пользовательское onInterceptTouchEvent в ListView

ответ

2

Попробуйте перекрывая onInterceptTouchEvent() ваших детей, как это:

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    if(!isAtTop && !isAtBottom){ 
     getParent().requestDisallowInterceptTouchEvent(true); 
    }    
    return super.onInterceptTouchEvent(ev); 
} 

В onInterceptTouchEvent() Calculate, если ListView прокрутил полностью к верхней или нижней части. Если это где-то посередине, попросите родителя не перехватывать штрихи.

Для проверки верхней или нижней попытки:

int scrollRange = computeVerticalScrollRange(); 
int scrollOffset = computeVerticalScrollOffset(); 
int scrollExtend = computeVerticalScrollExtent(); 
if(scrollOffset == 0){ 
    //AtTop 
}else if(scrollRange == scrollOffset + scrollExtend){ 
    //AtBottom 
} 
+0

Спасибо, я думаю, что я должен работать на его позиции прокрутки, но спасибо за ваши намеки; –

+0

Позиция полосы прокрутки зависит от положения прокрутки, поэтому это действительно не имеет значения. – thaussma