Подтвердить что ты не робот

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

Как вы программно изменяете ширину и высоту com.google.android.gms.maps.SupportMapFragment? Я бы предположил, что вы можете обернуть его в группу просмотра с помощью 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.
    }
});

Любая помощь будет замечательной!

4b9b3361

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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