在谷歌地图下创建按钮

时间:2015-10-04 10:35:15

标签: android google-maps button

我想在谷歌地图下面添加两个对齐的按钮。我尝试添加下面的按钮,但它没有显示,每当我尝试更改地图的大小时,界面会因不同的设备而异。我该怎么做?请帮忙。以下是我的代码,没有按钮代码 -

activity_maps.xml -

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/etSearch"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="search"
        android:id="@+id/btnSearch"
        android:layout_gravity="end"
        style="?android:attr/buttonStyleSmall"
        android:onClick="onSearch" />

</LinearLayout>

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

</LinearLayout>

2 个答案:

答案 0 :(得分:2)

如果我猜对了,你的问题是地图片段下面的任何按钮(在主LinearLayout内)都不可见。这可以通过将地图片段的layout_height设置为0dp并为layout_weight 1设置来解决。地图片段上方和下方的UI元素应将layout_height设置为wrap_content,就像您所做的那样。

这个想法是其他UI元素仅使用他们需要的屏幕高度量,然后地图片段将使用所有剩余空间。类似的方法通常可用于所有类型的布局,其中一些元素具有固定的高度/宽度,一个元素应该缩放到最佳高度/宽度。

作为XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:id="@+id/etSearch"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="search"
            android:id="@+id/btnSearch"
            android:layout_gravity="end"
            style="?android:attr/buttonStyleSmall"
            android:onClick="onSearch" />

    </LinearLayout>

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/map"
        tools:context=".MapsActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />

    <!--The Buttons below the map fragment-->
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2" />
    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

您可以通过为地图片段和包含editText和按钮的线性布局指定layout_weight属性来实现。

例如:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_weight="1"
    android:layout_height="wrap_content">

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/etSearch"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="search"
        android:id="@+id/btnSearch"
        android:layout_gravity="end"
        style="?android:attr/buttonStyleSmall"
        android:onClick="onSearch" />

</LinearLayout>

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/map"
    android:layout_weight="1"
    tools:context=".MapsActivity"
    android:name="com.google.android.gms.maps.SupportMapFragment" />

这将为地图片段和线性布局平均分割空间,但可以随意尝试不同的数字来实现您想要的效果