web-dev-qa-db-fra.com

Comment modifiez-vous par programme la largeur et la hauteur de Google Maps v2 (prise en charge des fragments)?

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!

18
loeschg

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);
37
loeschg

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;
}
4
Jorgesys

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;
3
Diogo Rosa

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);
1
Ashish John