web-dev-qa-db-ja.com

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

どんな助けでも素晴らしいです!

18
loeschg

プログラムでGoogleマップフラグメントの可視性を設定(API2) の助けを借りて、それを大体理解しました。

mMapFragment = (SupportMapFragment) (getSupportFragmentManager()
            .findFragmentById(R.id.storefront_map));
ViewGroup.LayoutParams params = mMapFragment.getView().getLayoutParams();
params.height = 900;
mMapFragment.getView().setLayoutParams(params);
37
loeschg

これはonConfigurationChanged()メソッドを使用した例です。

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

私が見つけた最速の方法(コード行が少ない):

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

マップの高さは固定しないでください。画面の高さと幅に合わせて設定してください。

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);
1
Ashish John