4

カスタム レイアウトで SupportMapFragment を使用しようとしていますが、現在、次のコードが機能します。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = super.onCreateView(inflater, container, savedInstanceState);
        // initMap();
        return view;
    }

onCreateView()しかし、メソッドを呼び出す代わりに、メソッドを変更して別のレイアウトをインフレートしたいと考えていsuper.onCreateView()ます。次のように表示するには:

View view  = inflater.inflate(R.layout.fragment, container,false);
mMap = (GoogleMap)view.findViewById(R.id.mapview);

しかし、GoogleMap は ではないviewので、次のように xml に追加することはできません:

<com.google.android.gms.maps.GoogleMap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />
4

4 に答える 4

7

カスタム レイアウトで SupportMapFragment を作成する場合は、サポート ライブラリから を拡張し、そこにある およびその他のビューでandroid.support.v4.app.Fragmentカスタム XML を拡張することをお勧めします。com.google.android.gms.maps.MapView

ただし、ここでMapView引用されているように、ライブサイクル メソッドをこれに転送するように注意してください。

于 2012-12-11T08:47:57.583 に答える
5

マップの上に LinearLayout を追加しました。ボタンには次のレイアウトを使用しました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/llPlaces"
android:orientation="horizontal"
android:background="@color/ACGris">
    <Button android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BUTTON1"/>
    <Button android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BUTTON2"/>
    <Button android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BUTTON3"/>

そして、SupportMapFragment を拡張するクラスを作成しました

public class FrgMapas extends SupportMapFragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View viewMain = super.onCreateView(inflater, container, savedInstanceState);
    View viewButtons = inflater.inflate(R.layout.layout_buttons, null);

    FrameLayout mainChild = (FrameLayout) ((ViewGroup)viewMain).getChildAt(0);
    mainChild.addView(viewButtons);

    Button btn1 = (Button) viewMain.findViewById(R.id.btn1);
    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "TuTa :)", Toast.LENGTH_LONG).show();
        }
    });

    return viewMain;
}

これがうまくいくことを願っています

于 2014-05-22T19:01:17.530 に答える
4

com.google.android.gms.maps.MapViewレイアウトに埋め込むViewことができる です。

于 2012-12-10T16:04:32.517 に答える
1

SupportMapFragment から派生したクラスで onCreateView をオーバーライドできます。super.onCreateView を呼び出して、その結果を、インフレータまたはインスタンス化するカスタム ViewGroup に挿入できます。ここにいくつかのサンプルコードがあります

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    FrameLayout layout = (FrameLayout) inflater.inflate(R.layout.my_layout,
            container, false);

    View v = super.onCreateView(inflater, container, savedInstanceState);
    layout.addView(v, 0);
    return layout;
}
于 2014-10-28T19:48:25.027 に答える