4

当我在同一“行”中有两个视图时,Android 如何计算视图的大小,一个宽度 =“fill_parent”?

例子:

<RelativeLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_height="fill_parent"  
    android:layout_width="fill_parent">  
    <EditText  
        android:id="@+id/EditText01"  
        android:hint="Enter some text..."  
        android:layout_alignParentLeft="true"  
        android:layout_width="match_parent"  
        android:layout_toLeftOf="@+id/Button01"  
        android:layout_height="wrap_content"></EditText>  
    <Button  
        android:id="@+id/Button01"  
        android:text="Press Here!"  
        android:layout_width="wrap_content"  
        android:layout_alignParentRight="true"  
        android:layout_height="wrap_content"></Button>  
</RelativeLayout>

此代码为 EditText 提供了所有可用空间,并在其右侧显示按钮。但是随着这种变化,EditText 填充了所有宽度,并且按钮不在屏幕上:

<RelativeLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_height="fill_parent"  
    android:layout_width="fill_parent">  
    <EditText  
        android:id="@+id/EditText01"  
        android:hint="Enter some text..."  
        android:layout_alignParentLeft="true"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"></EditText>  
    <Button  
        android:id="@+id/Button01"  
        android:text="Press Here!"  
        android:layout_width="wrap_content"  
    android:layout_toRightOf="@+id/EditText01"
        android:layout_height="wrap_content"></Button>  
</RelativeLayout
4

3 回答 3

7

android:layout_toLeftOf="@+id/Button01"将强制 的右边界与EditText的左侧对齐Button,因此 Android 会忽略match_parent宽度,强制宽度仅从左父侧填充到按钮的右侧。

android:layout_toRightOf="@+id/EditText01"将强制 的左边界与Button的右侧对齐EditText,但由于EditText宽度match_parent为右侧,因此右侧与父视图的右侧对齐,Android 只会强制按钮离开屏幕。

于 2013-05-14T14:21:52.177 回答
1

在您的两个示例中,<EditText/>都适合屏幕的所有宽度。在第一个示例中,Button不依赖于<EditText/>,因此它可以对齐到屏幕的右边缘。然而,在第二个示例中,Button必须与 ` 的右侧对齐,这就是它被推到视野之外的原因。

于 2013-05-14T14:27:00.353 回答
0

如果您使用的是,RelativeLayout那么您没有“行”,您所拥有的只是一个可以排列视图的空间。如果您想将按钮保留在屏幕的右侧并让 EditText 填充屏幕的其余部分,您可以执行以下操作:

<RelativeLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_height="fill_parent"  
    android:layout_width="fill_parent">  
    <EditText  
        android:id="@+id/EditText01"  
        android:hint="Enter some text..."  
        android:layout_toLeftOf="@+id/Button01"
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"></EditText>  
    <Button  
        android:id="@+id/Button01"  
        android:text="Press Here!" 
        android:alignParentRight="true"
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"></Button>  
</RelativeLayout/>
于 2013-05-14T14:54:49.457 回答