Как программно изменить ширину и высоту Google Maps v2 (фрагмент поддержки)?

как программно изменить ширину и высоту com.гуглить.андроид.СБМ.карты.SupportMapFragment? Я бы предположил, что вы можете обернуть его в viewgroup с match_parent, но я надеюсь не гнездиться, если мне не нужно (честно говоря, даже не уверен, что это работает).

 <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"
                    />

чтобы дать контекст, я хотел бы развернуть карту с одной высоты на другую при щелчке по карте.

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng latLng) {
       expandMap(); // not sure how to do this programatically.
    }
});

любая помощь будет здорово!

4 ответов


Я понял это в основном с помощью программно установите видимость фрагмента карты google (API2).

mMapFragment = (SupportMapFragment) (getSupportFragmentManager()
            .findFragmentById(R.id.storefront_map));
ViewGroup.LayoutParams params = mMapFragment.getView().getLayoutParams();
params.height = 900;
mMapFragment.getView().setLayoutParams(params);

это пример использования onConfigurationChanged() способ :

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);
    findViewById(R.id.storefront_map).getLayoutParams().width = 400;
}

вы не должны фиксировать высоту карты... установите его в соответствии с высотой и шириной экрана.

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

самый быстрый (с меньшим количеством строк кода) способ, который я нашел:

ViewGroup.MarginLayoutParams parms = (ViewGroup.MarginLayoutParams) rlLocation.getLayoutParams();
    parms.bottomMargin = 100;
    parms.topMargin = 100;