具有自定义布局的SupportMapFragment可能吗?

meh*_*meh 4 android google-maps-android-api-2

我正在尝试使用自定义布局的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;
    }
Run Code Online (Sandbox Code Playgroud)

但我想改变onCreateView()方法来膨胀不同的布局,而不是调用super.onCreateView()方法.看起来像这样:

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

但谷歌地图不是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"
    />
Run Code Online (Sandbox Code Playgroud)

Gre*_*eny 7

如果您想使用自定义布局创建一个SupportMapFragment,我更喜欢android.support.v4.app.Fragment从支持库中扩展,com.google.android.gms.maps.MapView并使用其他视图来扩充您的自定义XML .

但请注意将生态周期方法转发给此处MapView引用的方法.


小智 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"/>
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个扩展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;
}
Run Code Online (Sandbox Code Playgroud)

希望这对你有用