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.
}
});
どんな助けでも素晴らしいです!
プログラムで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;
}
私が見つけた最速の方法(コード行が少ない):
ViewGroup.MarginLayoutParams parms = (ViewGroup.MarginLayoutParams) rlLocation.getLayoutParams();
parms.bottomMargin = 100;
parms.topMargin = 100;
マップの高さは固定しないでください。画面の高さと幅に合わせて設定してください。
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);