2016-08-03 3 views
2

То, что я хочукак сделать заголовок ListView не потреблять сенсорное событие

Я хочу, чтобы заголовок ListView не потреблять на ощупь события

Проблему

У меня есть FrameLayout. В нем есть mapview и listview. В представлении listview есть прозрачный заголовок, чтобы показать больше изображений. Теперь ответ заголовка заголовка на события касания, но я хочу отправить эти события в mapview. Как сделать?

Я попытался

  • headerView.setEnabled(false)
  • headerView.setClickable(false)
  • mListView.addHeaderView(headerView, null, false)

Все они не удалось, какие-либо рекомендации?

+0

Единственный способ, я могу думать, чтобы предотвратить заголовок, чтобы поглотить событие касания, устанавливает его видимость на Невидимый. – Max

+0

Подумайте, @Anders. Я попробовал ваше решение, но не работал ... – Ninja

ответ

2

Я стараюсь много решений в SO, но они не являются work.Finally, я переопределить функцию dispatchTouchEvent(), это works.Complete версия над gist и код ключа здесь.

@Override 
public boolean dispatchTouchEvent(MotionEvent motionEvent) { 
    if(mHeaderView == null) return super.dispatchTouchEvent(motionEvent); 
    if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){ 
     //if touch header not to consume the event 
     Rect rect = new Rect((int) mHeaderView.getX(), (int) mHeaderView.getY(), mHeaderView.getRight(), mHeaderView.getBottom()); 
     if(rect.contains((int)motionEvent.getX(), (int)motionEvent.getY())){ 
      isDownEventConsumed = false; 
      return isDownEventConsumed; 
     }else { 
      isDownEventConsumed = true; 
      return super.dispatchTouchEvent(motionEvent); 
     } 
    }else{ 
     //if touch event not consumed, then move/up event should be the same 
     if(!isDownEventConsumed)return isDownEventConsumed; 
     return super.dispatchTouchEvent(motionEvent); 
    } 
} 
+0

, это сработало и для меня! –

+0

@PranoyC Рад видеть код, который помогает вам – Ninja

0

Пробовал ли вы установить onClickListener нуль при просмотре заголовка заголовка или this?

+0

Я пробовал, но не работал. наконец, я переопределяю функцию 'dispatchTouchEvent()', она работает ~ – Ninja

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