Android 如何让多个元素水平填满屏幕

How to make multiple elements fill screen horizontally in Android

我想要一个编辑文本和按钮水平填充屏幕。当我有这个配置时:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <EditText

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:id="@+id/et_word"
        android:padding="10dp"
        />

    <requestFocus/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:id="@+id/btn_word"
        android:text="@string/send"
        android:padding="10dp"
        />


</LinearLayout>

我得到这个结果:

当我有这个配置时:

  <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText

            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:id="@+id/et_word"
            android:padding="10dp"
            />

        <requestFocus/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:id="@+id/btn_word"
            android:text="@string/send"
            android:padding="10dp"
            />


    </LinearLayout>

我明白了:

我想在第二个配置中,edittext 确实填充了 parent 但按钮不可见。我怎样才能改变我的代码,使 edittext 和 button 水平填满屏幕?谢谢。

您可以使用布局权重来执行此操作。例如,如果您希望按钮为 wrap_content,并让 EditText 填充剩余的 space,请执行以下操作:

<LinearLayout>
   <EditText
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"/>

   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"/>
</LinearLayout>

如果你想让它们都占据一半的布局,你可以对每个使用 layout_weight="1"。或者将一个设置为 1,将另一个设置为 2 以获得 one-third/two-third 布局。随便你。

See this answer by Flo for more information on the layout_weight attribute.

您可以使用属性 Weight 为小部件提供相对大小。这是一个例子:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <EditText

        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="40"
        android:gravity="center"
        android:id="@+id/et_word"
        android:padding="10dp"
        />

    <requestFocus/>

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="10"
        android:gravity="center"
        android:id="@+id/btn_word"
        android:text="@string/send"
        android:padding="10dp"
        />


</LinearLayout>

使用该代码,您的 Edittext 的大小将是按钮大小的 4 倍,与您的宽度大小无关