Android RelativeLayout,wrap_content太小,不适合儿童

时间:2013-07-03 12:43:16

标签: android android-layout relativelayout android-ui android-xml

这是一个简单的RelativeLayout,其中4个控件以表格格式排列。 显示时,confirmpassword框被剪裁在底部。好像“wrap_content”没有正确计算孩子的身高。有什么想法吗?

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >  
    <TextView
        android:id="@+id/passwordlabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="34dp"
        android:text="Password"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@id/passwordlabel"
        android:layout_alignLeft="@+id/confirmpassword"
        android:layout_toRightOf="@id/passwordlabel"
        android:ems="10"
        android:inputType="textPassword" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/confirmpasslabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/passwordlabel"
        android:layout_below="@id/passwordlabel"
        android:text="Confirm Password"
        android:layout_marginTop="34dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/confirmpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@id/confirmpasslabel"
        android:layout_toRightOf="@id/confirmpasslabel"
        android:layout_marginLeft="15dp"
        android:ems="10"
        android:inputType="textPassword" />
</RelativeLayout>

这就是它的样子:

RelativeLayout in emulator

我已经尝试为两个底部控件添加填充和/或边距,但这些控件没有任何效果(并且无论如何都会让我感到震惊)。

注意: - 我有一个类似的问题before,一个善良的灵魂基本上通过拆分RelativeLayout来解决。我认为这不可能(可能是)但我担心我要么做错了,要么RelativeLayout有一个看似记录不足的大错

任何能够阐明这一点的人? TIA!

1 个答案:

答案 0 :(得分:1)

看起来确实有点像个bug。我无法通过RelativeLayout让它正常工作(不会以某种方式改变它) - 边缘的东西正在抛弃它。

要解决此问题,请尝试TableLayout

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

    <TableRow android:layout_marginTop="34dp">

        <TextView
            android:id="@+id/passwordlabel"
            android:text="Password"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/password"
            android:ems="10"
            android:inputType="textPassword" >

            <requestFocus />
        </EditText>

    </TableRow>

    <TableRow android:layout_marginTop="34dp">

        <TextView
            android:id="@+id/confirmpasslabel"
            android:text="Confirm Password"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/confirmpassword"
            android:layout_marginLeft="15dp"
            android:ems="10"
            android:inputType="textPassword" />

    </TableRow>

</TableLayout>