如何在Google Maps Android API v2中向MapFragment添加自定义控件?

Tom*_*art 13 java android google-maps android-fragments google-maps-android-api-2

我有SupportMapFragment,我需要在其中添加自定义控件以更改地图类型.调用getView(),我得到NoSaveStateFramelayout,我不认为将它直接添加到它或它的子节点是个好主意.

如何在地图上添加按钮以更改地图类型的最佳方法是什么?

Tom*_*art 37

我决定覆盖onCreateView并将代码封装在地图中.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) {
    View mapView = super.onCreateView(inflater, viewGroup, bundle);
    RelativeLayout view = new RelativeLayout(getActivity());
    view.addView(mapView, new RelativeLayout.LayoutParams(-1, -1));
    // working with view
    return view;
}
Run Code Online (Sandbox Code Playgroud)

它按我需要的方式工作.


Emi*_*Adz 5

当地图和相对布局match_parent为宽度和高度时,尝试将地图放在具有相对布局的框架布局内.在相对布局中放置所有所需的扩展控件.这样,地图就会出现在地图上.

有点像:

<FrameLayout 
     android:layout_width="match_parent"
     android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/title_gray_background" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:paddingLeft="10dp"
            android:text="@string/tasks"
            android:paddingRight="3dp"
            android:textStyle="bold"
            android:textSize="18sp"
            android:textColor="@color/my_even_darker_gray" />

        <Button
            android:id="@+id/bLocateMe"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="3dp"
            android:background="@drawable/locate_me_button_selector"
            android:clickable="true"
            android:onClick="locateMeButtonOnClick"
            android:text="@string/locate_me"
            android:textColor="@color/my_white" />

    </RelativeLayout>

    <fragment
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)