使用Raw MapView浮动按钮

时间:2013-01-07 00:29:03

标签: android android-button google-maps-android-api-2

在新的谷歌地图api出来之前,我能够实现一个谷歌地图片段,我会添加按钮浮动地图,方法是将它们添加到xml文件中。我能够在Raw地图视图演示活动的xml文件中使用相同的技术。演示活动是片段活动,但如果感觉它实际上无法使用片段。它只是用xml文件中的地图填充其视图。

是否可以强制地图片段加载特定布局而不创建扩展mapfragment并且必须自己处理mapview生命周期的片段。我知道通常不建议这样做。

Old XML for Buttons

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<com.google.android.maps.MapView
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:apiKey="0xR1g8qRRLoUp8-8gd7050zKWtMQCMDDHhizisw"
    android:clickable="true" >

    android:apiKey = "APIKEY" >
</com.google.android.maps.MapView>

<ZoomControls
    android:id="@+id/zoom"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:padding="10dp" />

<ImageButton
    android:id="@+id/button"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:background="@null"
    android:contentDescription="@string/description"
    android:padding="20dp"
    android:src="@drawable/button" >

来自rawMapViewDemo的XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

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

<ImageButton
    android:id="@+id/cacbutton"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:background="@null"
    android:contentDescription="@string/description"
    android:padding="20dp"
    android:src="@drawable/taxi" >
</ImageButton>

1 个答案:

答案 0 :(得分:0)

我试图以编程方式构建我的地图片段,这不允许我做我想做的事情。将片段添加到布局文件允许我正确添加按钮。现在只有显示和隐藏mapfragment并且视图没有更新的问题。 下面的XML对我有用。请注意,我实际上使用了2个地图片段。我还没想出如何为这两个片段使用一个按钮。我对这些想法持开放态度。

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

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

        <fragment
            android:id="@+id/map1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.SupportMapFragment" />

        <ImageButton
            android:id="@+id/cacbutton"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:background="@null"
            android:contentDescription="@string/description"
            android:padding="20dp"
            android:src="@drawable/button" >
        </ImageButton>
    </RelativeLayout>

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

        <fragment
            android:id="@+id/map2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.SupportMapFragment" />

        <ImageButton
            android:id="@+id/cacbutton2"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:background="@null"
            android:contentDescription="@string/description"
            android:padding="20dp"
            android:src="@drawable/button" >
        </ImageButton>
    </RelativeLayout>
</FrameLayout>