Android - 无法获得相对布局以与父底部对齐

时间:2015-07-22 21:53:10

标签: android android-layout android-fragments

我正在尝试添加一个自定义按钮( GoogleMap ,虽然我不确定它是多么相关......)片段。

我不希望它本身就位于它下面 - 就像我可以使用 FrameLayout LinearLayout 一样 - 但我希望按钮位于顶部其父布局透明的地图......

这是我(目前)在我的xml中的内容:

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" // THIS DOESNT WORK !!!
        android:background="#FC0" // for debug purposes
        android:gravity="center|bottom" >

        <Button
            android:id="@+id/location_order_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/small_margin"
            android:background="@drawable/nav_btn_send"
            android:text=""
            android:textColor="@color/black"
            android:textSize="@dimen/loginFontSize" />
    </RelativeLayout>

</fragment>

注意'android:layout_alignParentBottom'和'android:background'行的注释......

这给了我这个结果:

enter image description here

现在......您可以通过代码告诉我我正在尝试将其与屏幕/地图底部对齐...但无论我做什么,它都会与ActionBar下方的顶部对齐......

我尝试了其他一些我在SO上找到的方法,但这是我到目前为止最接近的结果...

知道我做错了吗?

3 个答案:

答案 0 :(得分:2)

您应该以这种方式在RelativeLayout内定义您的片段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    android:background="#FC0"
    android:gravity="center|bottom" >

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
        map:mapType="normal"
        tools:layout="@layout/activity_location" />

    <Button
        android:id="@+id/location_order_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/small_margin"
        android:background="@drawable/nav_btn_send"
        android:text=""
        android:layout_alignParentBottom="true"
        android:textColor="@color/black"
        android:textSize="@dimen/loginFontSize" />
</RelativeLayout>

并且您应该在要在父级底部对齐的子元素中使用layout_alignParentBottom属性,在这种情况下,它是Button

答案 1 :(得分:1)

试试这个:

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

<fragment
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    class="com.google.android.gms.maps.SupportMapFragment"
    map:mapType="normal"
    tools:layout="@layout/activity_location"/>

    <Button
        android:id="@+id/location_order_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/small_margin"
        android:background="@drawable/nav_btn_send"
        android:text=""
        android:textColor="@color/black"
        android:textSize="@dimen/loginFontSize"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="10dp"/>

</RelativeLayout>

答案 2 :(得分:0)

对齐父级底部是片段的无效布局参数。 试试这个: 将相对布局的高度设置为match_parent,并对齐相对布局底部的按钮。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FC0">

    <Button
        android:id="@+id/location_order_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/small_margin"
        android:layout_alignParentBottom="true"
        android:background="@drawable/nav_btn_send"
        android:text=""
        android:textColor="@color/black"
        android:textSize="@dimen/loginFontSize" />
</RelativeLayout>