2010-08-11 6 views
2

J'ai placé un MapView dans un ScrollView.MapView à l'intérieur ScrollView n'affiche pas les commandes de zoom

Aussi, j'ajouté commande de zoom à la vue carte

mapView.setBuiltInZoomControls(true); 

Les rouleaux ScrollView correctement, mais quand je clique sur le MapView, la commande de zoom est pas affiché. (pour la plupart du temps). Normalement, le contrôle du zoom devrait apparaître au bas de la vue de la carte.

Il semble Android confondu avec un événement tactile (ou un clic) sur MapView et ScrollView.

Je voudrais être en mesure de 'focus' la carte, et montre la commande de zoom.

J'ai essayé de désactiver la capacité de défilement de ScrollView, mais cela ne fonctionne pas.

Une suggestion?

Merci beaucoup

Répondre

0

Je mis un MapView dans un ScrollView.

Il est peu probable que cela fonctionne. Ne placez pas de widgets défilants dans un ScrollView. MapView sait déjà comment faire défiler.

+0

Merci pour votre réponse! Je n'ai pas trouvé de solution à mon problème. Je ferais mieux de ne pas mettre MapView à l'intérieur de ScrollView. –

4

J'ai eu un même problème pendant 10 jours, mais j'ai eu une solution il y a quelques minutes !! Voici la solution. J'ai fait un MapView personnalisé et remplacer onTouchEvent() comme ceci.

@Override 
public boolean onTouchEvent(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; 
    } 

    // Handle MapView's touch events. 
    super.onTouchEvent(ev); 
    return true; 
} 
+0

pouvez-vous coller la classe complète s'il vous plaît? – brux

Questions connexes