android - studio - ¿Cómo cambias programáticamente el ancho y alto de Google Maps v2(soporte Fragmento)?
marker color google maps (4)
Este es un ejemplo que utiliza el método onConfigurationChanged()
:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
findViewById(R.id.storefront_map).getLayoutParams().width = 400;
}
¿Cómo cambias programáticamente el ancho y el alto de un com.google.android.gms.maps.SupportMapFragment? Me imagino que podrías envolverlo en un grupo de vista con match_parent, pero espero no anidar si no tengo que hacerlo (sinceramente, ni siquiera estoy seguro de que funcione).
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/storefront_map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="250dp"
/>
Para dar contexto, me gustaría expandir el mapa de una altura a otra haciendo clic en el mapa.
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
expandMap(); // not sure how to do this programatically.
}
});
Cualquier ayuda sería genial!
La forma más rápida (con menos líneas de código) encontré:
ViewGroup.MarginLayoutParams parms = (ViewGroup.MarginLayoutParams) rlLocation.getLayoutParams();
parms.bottomMargin = 100;
parms.topMargin = 100;
Lo resolví en gran medida con la ayuda de la visibilidad de fragmentos de mapas de Google (API2) programáticamente .
mMapFragment = (SupportMapFragment) (getSupportFragmentManager()
.findFragmentById(R.id.storefront_map));
ViewGroup.LayoutParams params = mMapFragment.getView().getLayoutParams();
params.height = 900;
mMapFragment.getView().setLayoutParams(params);
No debes fijar la altura de un mapa ... configúralo de acuerdo con la altura y el ancho de la pantalla.
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
ViewGroup.LayoutParams params = mMapFragment.getView().getLayoutParams();
params.height = height/2;
mMapFragment.getView().setLayoutParams(params);