2012-12-24 10 views
5

Mam poziomy widok przewijania, który zawiera hierarchię grup widoków, a następnie mapę google. Mój problem polega na tym, że HSV chwyta lewą i prawą opór, który jest przeznaczony dla mapy. PróbowałemScrollView łapie zdarzenie dotykowe dla mapy google

hsv.requestDisallowInterceptTouchEvent(true); 

a nawet

mapView.getParent().requestDisallowInterceptTouchEvent(true); 

ale bezskutecznie. Czy coś tutaj robię źle? Czy możesz zaproponować inne rozwiązanie?

Myślę, że powinno to być moje oryginalne pytanie: Jak zaimplementować rozwiązanie zamieszczone tutaj Mapview inside a ScrollView. W szczególności, gdzie mogę umieścić kod?

+0

Rozszerzony pytanie. – user1923613

+0

Sprawdź inne działające rozwiązanie: https://stackoverflow.com/a/17317176/989418 –

+0

Nic nowego do innych odpowiedzi, ale właśnie stworzyłem Gist o tym, jak to rozwiązałem: https://gist.github.com/ Sottti/890daaeead1bd4784dfce7066a9011aa – Sotti

Odpowiedz

11

Wygląda na to, że jesteś na dobrej drodze, ale powinieneś wywołać metodę requestDisallowInterceptTouchEvent (true) na każdym zdarzeniu dotyku (patrz docs). Spróbuj this solution

Aktualizacja:

Spróbuj tego:

final HorizontalScrollView hsv = ... 
final MapView mapView = ... 

mapView.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_MOVE: 
       hsv.requestDisallowInterceptTouchEvent(true); 
       break; 
      case MotionEvent.ACTION_UP: 
      case MotionEvent.ACTION_CANCEL: 
       hsv.requestDisallowInterceptTouchEvent(false); 
       break; 
     } 
     return mapView.onTouchEvent(event); 
    } 
}); 
+0

Czy możesz mi pomóc jeszcze bardziej, proszę? Innym problemem, który mam, jest to, że nie wiem, gdzie w projekcie powinienem umieścić kod. Czytałem tak wiele rozwiązań, ale naprawdę nie wiem, gdzie umieścić kod, który widziałem. – user1923613

+0

Proszę przejrzeć zaktualizowaną odpowiedź –

+0

To jest wspaniałe! Teraz działa. Wielkie dzięki! – user1923613

-1

spróbuj zastąpić onTouch mapy i zawsze zwracaj z niego wartość true.

Powiązane problemy