如何在Google Maps Android API v2中向MapFragment添加自定义控件?
2022-09-04 05:27:01
我有SupportMapFragment,我需要在其中添加自定义控件以更改地图类型。调用getView(),我得到了NoSaveStateFramelayout,我认为直接将其添加到它或其子级中不是一个好主意。
如何在地图上添加按钮以更改地图类型的最佳方法是什么?
我有SupportMapFragment,我需要在其中添加自定义控件以更改地图类型。调用getView(),我得到了NoSaveStateFramelayout,我认为直接将其添加到它或其子级中不是一个好主意。
如何在地图上添加按钮以更改地图类型的最佳方法是什么?
我决定重写 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;
}
它可以根据需要工作。
当地图和相对布局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>