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