在RelativeLayout中一起使用layout_alignBaseline和layout_alignBottom

时间:2012-10-22 11:55:23

标签: android layout relativelayout

我正在尝试获得类似这样的布局:

Relative layout example

那是:

  1. TextView与父级左侧和上方对齐(带边距)。
  2. EditText左侧TextViewButton右侧TextView,基线与Button对齐。
  3. EditText与父权利对齐(只有右边距)。这是破碎的部分:底部对齐<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="32dp" android:layout_marginTop="32dp" android:text="Text:" /> <EditText android:id="@+id/edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/text" android:layout_toLeftOf="@+id/button" android:layout_toRightOf="@+id/text" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignBottom="@+id/edit" android:layout_marginRight="32dp" android:text="Ok" /> </RelativeLayout>
  4. 无论出于何种原因,它都不起作用。这是我期望工作的代码:

    ImageButton

    这样就出现了:

    Broken RelativeLayout

    发生了什么事?

    修改

    抱歉,我不确定为什么我更改了此示例,但在我的代码中,我实际上使用的是Button,而不是EditText,因此解决方案无法与基线对齐按钮 - {{1}}必须与按钮的底部(或中间,如果可能)对齐。

2 个答案:

答案 0 :(得分:4)

试试这个..

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

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="32dp"
    android:layout_marginTop="32dp"
    android:text="Text:" />


<EditText
    android:id="@+id/edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/text"
    android:layout_toLeftOf="@+id/button"
    android:layout_toRightOf="@+id/text"
    android:ems="10" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/edit"
    android:layout_alignBottom="@+id/edit"
    android:layout_alignParentRight="true"
    android:layout_marginRight="30dp"
    android:text="Ok" />

答案 1 :(得分:1)

似乎是一个影响alignBaseline被用作其他孩子的锚点的bug。 https://code.google.com/p/android/issues/detail?id=73697&thanks=73697