0

У меня есть ListView, где я добавить Google Map MapView в поле зрения заголовка, ниже код на том, как я могу это сделать:Android MapView в ListView заголовка не называет onTouchEvent

vListViewTrips.addHeaderView(vMapHeaderView, null, false); 

Карта является показаны и работы, но карта не обрабатывает любые жесты, когда его трогают, хотя все жесты anebled по: googleMap.getUiSettings().setAllGesturesEnabled(true);

Основываясь на некоторых поисков, которые я сделал, я пытался extend MapView и переопределить public boolean dispatchTouchEvent(final MotionEvent motionEvent), но до сих пор в onTouchEvent из MapView никогда не называется.

Вот код:

@Override 
public boolean dispatchTouchEvent(final MotionEvent motionEvent) { 


    ViewParent viewparent = getParent(); 
    switch (motionEvent.getAction()) { 
     // Pressed on map: stop listview from scrolling 
     case MotionEvent.ACTION_DOWN: 
      viewparent.requestDisallowInterceptTouchEvent(true); 
      break; 

     case MotionEvent.ACTION_MOVE: 
      viewparent.requestDisallowInterceptTouchEvent(true); 
      break; 

     // Released on map or cancelled: listview can be normal again 
     case MotionEvent.ACTION_UP: 
      viewparent.requestDisallowInterceptTouchEvent(false); 
      break; 
    } 

    return super.dispatchTouchEvent(motionEvent); 
} 

Примечание им с помощью com.google.android.gms.maps.MapView

+0

Вы нашли решение? – Klemens

ответ

0

Вы пробовали переопределение методы ListView сенсорную, чтобы вернуть false, так что события продолжают распространяющиеся для просмотра детей?

Я имею в виду создание пользовательского представления, расширение ListView и использование его вместо этого.

+0

Я попробую сейчас – Arlind

+0

Это не работает – Arlind

1

Попробуйте переопределить метод onInterceptTouchEvent() в вашем MapView подкласса вместо:

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    int action = ev.getAction(); 
    switch (action) { 
     case MotionEvent.ACTION_DOWN: 
      // Disallow ScrollView to intercept touch events. 
      this.getParent().requestDisallowInterceptTouchEvent(true); 
      break; 

     case MotionEvent.ACTION_UP: 
      // Allow ScrollView to intercept touch events. 
      this.getParent().requestDisallowInterceptTouchEvent(false); 
      break; 
    } 

    return super.onInterceptTouchEvent(ev); 
} 
Смежные вопросы