2013-05-15 1 views
3

У меня есть вид с onClickListener внутри прокрутки. Представление должно реагировать на клики, но scrollview интерпретирует почти все касания как ACTION_MOVE и перехватывает события касания, поэтому я не могу щелкнуть представление.Android ScrollView Перехватывает клики, не должен делать этого

Я изменил мою Scrollview следующим образом (потому что в ViewPager и нужно отключить прокрутку ViewPager)

@Override 
public boolean onInterceptTouchEvent(MotionEvent p_event) { 
    if (p_event.getAction() == MotionEvent.ACTION_MOVE) { 
     return true; 
    } 
    return super.onInterceptTouchEvent(p_event); 
} 

@Override 
public boolean onTouchEvent(MotionEvent p_event) { 
    if (p_event.getAction() == MotionEvent.ACTION_MOVE && getParent() != null) { 
     getParent().requestDisallowInterceptTouchEvent(true); 
    } 
    return super.onTouchEvent(p_event); 
} 

Как я могу изменить чувствительность ScrollView не регистрировать малейшие движения, как ACTION_MOVE и передать события касания своим детям?

благодарит за вашу помощь!

ответ

2

Ничего, я исправил это! Первая часть не является необходимой, если изменить код следующим образом он работает отлично:

@Override 
public boolean onInterceptTouchEvent(MotionEvent p_event) { 
    /*if (p_event.getAction() == MotionEvent.ACTION_MOVE) { 
     return true; 
    }*/ 
    return super.onInterceptTouchEvent(p_event); 
} 

@Override 
public boolean onTouchEvent(MotionEvent p_event) { 
    if (p_event.getAction() == MotionEvent.ACTION_MOVE && getParent() != null) { 
     getParent().requestDisallowInterceptTouchEvent(true); 
    } 
    return super.onTouchEvent(p_event); 
} 
+0

Это здорово, спасибо, но это компромисс для меня. У меня есть 10 детей внутри моего ScrollView, и с этим я должен установить один и тот же обработчик кликов на все из них. В идеале я бы хотел, чтобы мой родитель ScrollViews (или даже сам ScrollView) отвечал на клик, но я не могу заставить его работать ни для одного из этих случаев. Будет работать либо функция прокрутки, либо функция щелчка будет работать, но никогда не будет одновременно. – RTF

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