Problema scroll en Mapview dentro de un ScrollView


Programando en Android, me he encontrado que si tenemos un MapView dentro de un ScrollView el scroll que prevalece es el del componente padre ScrollView, para poder activar el scroll en el MapView, os aporto la siguiente solución:

Crear nueva clase MapViewScrollView:

package com.android.auxiliar;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

import com.google.android.maps.MapView;

public class MapViewScrollView extends MapView {

public MapViewScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

@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;
}

}

 

Después en el layout donde tengamos, sustituímos el componente MapView de google por el nuestro:

<!– Mapa com.google.android.maps.MapView–>
<com.android.auxiliar.MapViewScrollView
android:id=”@+id/mapa”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:clickable=”true”
android:apiKey=”vuestraKEY”/>

 

Por último desde la Activity solo tenemos que llamar al componente de la siguiente manera:

MapViewScrollView _mapa = = (MapViewScrollView)findViewById(R.id.mapa);

 

Con esto conseguimos que cuando estamos interactuando con el MapView desactive del componente padre ScrollView los desplazamientos en vertical, cuando salimos del MapView podemos comprobar que sí funcionan de nuevo.

 

Anuncios
  1. This post is in fact a good one it assists new the web viewers,
    who are wishing in favor of blogging.

  1. 27/09/14
  2. 19/10/14

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: