SupportMapFragment con un diseño personalizado, posible?
Estoy tratando de tener SupportMapFragment con un diseño personalizado, ahora el código siguiente funciona:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = super.onCreateView(inflater, container, savedInstanceState); // initMap(); return view; }
Pero quiero cambiar el método onCreateView()
para inflar un diseño diferente, en lugar de llamar al método super.onCreateView()
. Para parecerse a algo como esto:
- Tiempo de viaje entre dos ubicaciones en Google Map Android API V2
- Google NavigationDrawer no dibuja correctamente en el mapa
- Google mapa cuestión incluso todos los ajustes son correctos según google doc
- Cambiar el primer plano y el color de fondo del fragmento Autocompletar de lugar
- Google Maps Android Clustering OnCameraChangeListener () despreciado
View view = inflater.inflate(R.layout.fragment, container,false); mMap = (GoogleMap)view.findViewById(R.id.mapview);
Pero GoogleMap no es una view
así que no puedo añadirla al xml, como de la siguiente manera:
<com.google.android.gms.maps.GoogleMap xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapview" android:layout_width="wrap_content" android:layout_height="wrap_content" />
- ¿Puedo tener una sola clave de API de Google Maps para todas mis aplicaciones sin registrar sus nombres de paquete?
- Cómo convertir un LatLng y un radio a LatLngBounds en Android Google Maps API v2?
- Google Maps Android API v2 ClassNotFound Error de tiempo de ejecución
- ¿Cómo hacer que el marcador aparezca en el centro de la ventana inicial de Google Map?
- Actividad de inicio con clic en google map marker infoWindow
- Cómo convertir un dibujable en un mapa de bits para cambiar el color de un marcador en Google Maps Android API v2
- Android SDK Manager no carga la última plataforma SDK de Android (API 17)
- ¿Cómo agregar texto sobre polilínea en google maps?
Si desea crear un SupportMapFragment con un diseño personalizado, prefiero extender el android.support.v4.app.Fragment
de la Biblioteca de soporte e inflar su XML personalizado con el com.google.android.gms.maps.MapView
y otros Puntos de vista.
Pero tenga cuidado de reenviar los métodos del ciclo de vida a este MapView
como se cita aquí .
He añadido un LinearLayout encima del mapa. He utilizado este diseño para los botones:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/llPlaces" android:orientation="horizontal" android:background="@color/ACGris"> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="BUTTON1"/> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="BUTTON2"/> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="BUTTON3"/>
Y luego he creado una clase que se extiende SupportMapFragment
public class FrgMapas extends SupportMapFragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View viewMain = super.onCreateView(inflater, container, savedInstanceState); View viewButtons = inflater.inflate(R.layout.layout_buttons, null); FrameLayout mainChild = (FrameLayout) ((ViewGroup)viewMain).getChildAt(0); mainChild.addView(viewButtons); Button btn1 = (Button) viewMain.findViewById(R.id.btn1); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), "TuTa :)", Toast.LENGTH_LONG).show(); } }); return viewMain; }
Espero que esto funcione para usted
com.google.android.gms.maps.MapView
es una View
que puede incrustar en sus diseños.
Puede sobreescribir onCreateView en la clase derivada de SupportMapFragment. Puede llamar a super.onCreateView e insertar el resultado en un grupo de vistas personalizado que infle o instancia. He aquí algunos ejemplos de código
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { FrameLayout layout = (FrameLayout) inflater.inflate(R.layout.my_layout, container, false); View v = super.onCreateView(inflater, container, savedInstanceState); layout.addView(v, 0); return layout; }
- Formato de la fecha de caducidad en formato mm / aa
- ¿Cómo cierro AlertDialog cuando hago clic en el elemento ListView