Как программно изменить ширину и высоту 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.
}
});
Любая помощь будет замечательной!
Ответы
Ответ 1
Я понял это в основном с помощью Программно установил видимость фрагмента карты Google (API2).
mMapFragment = (SupportMapFragment) (getSupportFragmentManager()
.findFragmentById(R.id.storefront_map));
ViewGroup.LayoutParams params = mMapFragment.getView().getLayoutParams();
params.height = 900;
mMapFragment.getView().setLayoutParams(params);
Ответ 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;