12

Google map-V2 API を使用して Android でアプリケーションを作成しています。Googleマップアプリと同じようにアクションバーを重ねたい。そして、「現在地」ボタンを有効にしました。現在の問題は、現在地ボタンがアクション バーの下にあることです。このボタンを再配置する方法はありますか。マップに似たアプリを作りたいです。私はアンドロイドが初めてなので、助けてください。

4

6 に答える 6

3

findViewById ソリューションの代わりに、findViewWithTag を使用してボタンへの参照を取得しました。文字列を使用すると、より読みやすく、信頼できるように思えました。

    View myLocationButton = mMap.findViewWithTag("GoogleMapMyLocationButton");
    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) myLocationButton.getLayoutParams();
    rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
    rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
于 2017-03-06T05:38:52.143 に答える
3

以下のコードを使用して、位置ボタンをビューの右下隅に再配置することで、マップフラグメントでこの問題を解決しました。これが私の Maps Activity.java です:-

このコード行を onCreate() メソッドに追加し、

   SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapView = mapFragment.getView();
        mapFragment.getMapAsync(this);

ここに onMapReady() コードがあります:-

  @Override
        public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;
            mMap.setMyLocationEnabled(true);

            // Add a marker in Sydney and move the camera
            LatLng sydney = new LatLng(-34, 151);
            mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
            mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));

            if (mapView != null &&
                    mapView.findViewById(Integer.parseInt("1")) != null) {
                // Get the button view
                View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
                // and next place it, on bottom right (as Google Maps app)
                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
                        locationButton.getLayoutParams();
                // position on right bottom
                layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
                layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
                layoutParams.setMargins(0, 0, 30, 30);
            }

        }

これで問題が解決することを願っています。ありがとう。

于 2016-08-27T07:25:21.060 に答える
2

GoogleMap.setPadding(left, top, right, bottom) を使用するだけで、他のビューによって隠される可能性がある地図の部分を示すことができます。パディングを設定すると、標準のマップ コントロールが再配置され、カメラの更新ではパディングされた領域が使用されます。

https://developers.google.com/maps/documentation/android/map#map_padding

于 2014-08-07T14:00:07.037 に答える