Comment modifier par programmation la largeur et la hauteur d'un com.google.Android.gms.maps.SupportMapFragment? J'imagine que vous pourriez être en mesure de l'envelopper dans un groupe de vues avec match_parent, mais j'espère ne pas imbriquer si je n'ai pas à le faire (honnêtement, même pas sûr que cela fonctionne).
<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"
/>
Pour donner du contexte, je voudrais étendre la carte d'une hauteur à l'autre sur le clic de carte.
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
expandMap(); // not sure how to do this programatically.
}
});
Toute aide est la bienvenue!
Je l'ai compris en grande partie à l'aide de Définir par programme la visibilité des fragments de carte Google (API2) .
mMapFragment = (SupportMapFragment) (getSupportFragmentManager()
.findFragmentById(R.id.storefront_map));
ViewGroup.LayoutParams params = mMapFragment.getView().getLayoutParams();
params.height = 900;
mMapFragment.getView().setLayoutParams(params);
voici un exemple utilisant la méthode onConfigurationChanged()
:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
findViewById(R.id.storefront_map).getLayoutParams().width = 400;
}
La manière la plus rapide (avec moins de lignes de code) que j'ai trouvée:
ViewGroup.MarginLayoutParams parms = (ViewGroup.MarginLayoutParams) rlLocation.getLayoutParams();
parms.bottomMargin = 100;
parms.topMargin = 100;
Vous ne devez pas fixer la hauteur d'une carte ... réglez-la en fonction de la hauteur et de la largeur de l'écran.
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);