Как программно изменить ширину и высоту 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. } }); 

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

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

Я понял это в основном с помощью программно заданной видимости фрагмента карты 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;