Android RelativeLayout按钮重叠

时间:2017-02-17 10:27:17

标签: android android-layout android-relativelayout

我有这样的布局:

Screenshot 1

我希望btn1垂直对齐到中心,它下面的元素也会向下推。但是在我将btn1中的android:layout_centerVertical放入后,它与中心垂直对齐,但它下方的元素没有向下推。

布局后我把android:layout_centerVertical =" true"在btn1:

Screenshot 2

这是我的xml:

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

    <RelativeLayout
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <Button
                android:id="@+id/btn1"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="1" />

        <Button
                android:id="@+id/btn2"
                android:layout_centerHorizontal ="true"
                android:layout_below="@id/btn1"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Some Text 1" />



            <Button
                    android:id="@+id/btn3"
                    android:layout_below="@id/btn2"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="Some Text 2" />

            <Button
                    android:id="@+id/btn4"
                    android:layout_toRightOf ="@id/btn3"
                    android:layout_alignBottom="@id/btn3"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="Some Text 3" />

    </RelativeLayout>

</RelativeLayout>

我知道如果我在父布局中指定足够的高度它将正常工作但稍后我将使此表单动态生成。有没有办法让它自动向下推送wrap_content?

4 个答案:

答案 0 :(得分:0)

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

    <RelativeLayout
        android:layout_centerInParent="true"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <Button
                android:id="@+id/btn1"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="1" />

        <Button
                android:id="@+id/btn2"
                android:layout_centerHorizontal ="true"
                android:layout_below="@id/btn1"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Some Text 1" />



            <Button
                    android:id="@+id/btn3"
                    android:layout_below="@id/btn2"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="Some Text 2" />

            <Button
                    android:id="@+id/btn4"
                    android:layout_toRightOf ="@id/btn3"
                    android:layout_alignBottom="@id/btn3"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="Some Text 3" />

    </RelativeLayout>

</RelativeLayout>

将centerInParent值添加到您的相对布局中,如上所示

答案 1 :(得分:0)

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

<RelativeLayout
    android:id="@+id/relativeLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true">


</RelativeLayout>

<Button
    android:id="@+id/btn1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/relativeLayout"
    android:layout_alignBottom="@+id/relativeLayout"
    android:layout_centerHorizontal="true"
    android:text="1" />

<Button
    android:id="@+id/btn2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/relativeLayout"
    android:layout_centerHorizontal="true"
    android:text="Some Text 1" />


<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/btn2"
    android:layout_centerHorizontal="true">

    <Button
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some Text 2" />

    <Button
        android:id="@+id/btn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/btn3"
        android:layout_toRightOf="@id/btn3"
        android:text="Some Text 3" />

</RelativeLayout>

答案 2 :(得分:0)

试试这个,

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


        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="1" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn1"
            android:layout_centerHorizontal="true"
            android:text="Some Text 1" />

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn2"
            android:layout_centerHorizontal="true">

            <Button
                android:id="@+id/btn3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Some Text 2" />

            <Button
                android:id="@+id/btn4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/btn3"
                android:text="Some Text 3" />
        </RelativeLayout>

    </RelativeLayout>

答案 3 :(得分:0)

只需删除第二个相对布局或将布局高度和宽度设置为 match_parent