如何拉伸组件以匹配Android布局中父组件的宽度?

时间:2013-04-28 20:40:12

标签: android android-layout android-linearlayout

以下是我设计的布局。

enter image description here

这是我的代码:

<LinearLayout
    android:id="@+id/digitRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/login_button_1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/login_button_2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/login_button_3" />
</LinearLayout>

<LinearLayout
    android:id="@+id/digitRow2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_4" />

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_5" />

    <Button 
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_6" />
</LinearLayout>

<LinearLayout
    android:id="@+id/digitRow3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_7" />

    <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_8" />

    <Button
        android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_9" />
</LinearLayout>

<LinearLayout
    android:id="@+id/digitRow4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/buttonClear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_clear" />

    <Button
        android:id="@+id/button0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_0" />

    <Button
        android:id="@+id/buttonBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_back" />
</LinearLayout>

<LinearLayout
    android:id="@+id/buttonRow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:orientation="horizontal"
    android:padding="5dp" >

    <Button
        android:id="@+id/buttonChange"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_dhange" />

    <Button
        android:id="@+id/buttonDisable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_button_disable" />
</LinearLayout>

问题是我想拉伸底部的两个按钮,“更改”和“后退”,以匹配上面按钮的宽度。

3 个答案:

答案 0 :(得分:1)

你可以对它们使用重量,如下所示:

<LinearLayout
android:id="@+id/buttonRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="horizontal"
android:padding="5dp" >

 <Button
    android:id="@+id/buttonChange"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:text="@string/login_button_dhange" />

<Button
    android:id="@+id/buttonDisable"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:text="@string/login_button_disable" />

答案 1 :(得分:0)

你可能想要类似下面的代码。
我使用了硬编码按钮宽度,但您可能希望将其放在dimen.xml中并引用它。我把一切都集中在引力上。

我也尝试过这种重量,但重新调整大小很有趣。随着屏幕变宽,按钮变宽两个。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:gravity="center_horizontal"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
<LinearLayout
    android:id="@+id/digitRow1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:text="1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:text="2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:text="3" />
</LinearLayout>

<LinearLayout
    android:id="@+id/digitRow2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button4"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="4" />

    <Button
        android:id="@+id/button5"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="5" />

    <Button
        android:id="@+id/button6"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="6" />
</LinearLayout>

<LinearLayout
    android:id="@+id/digitRow3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button7"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="7" />

    <Button
        android:id="@+id/button8"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="8" />

    <Button
        android:id="@+id/button9"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="9" />
</LinearLayout>

<LinearLayout
    android:id="@+id/digitRow4"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/buttonClear"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="Clear" />

    <Button
        android:id="@+id/button0"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="0" />

    <Button
        android:id="@+id/buttonBack"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="Back" />
</LinearLayout>

<LinearLayout
    android:id="@+id/buttonRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:orientation="horizontal"
    android:padding="5dp"
    android:gravity="center_horizontal"
    >

    <Button
        android:id="@+id/buttonChange"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="Change" />

    <Button
        android:id="@+id/buttonDisable"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="Disable" />
</LinearLayout>

答案 2 :(得分:0)

尝试使用如下的重量。还可以使用边距来调整按钮的位置。

<LinearLayout
android:id="@+id/buttonRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="horizontal"
android:padding="5dp" >

 <Button
    android:id="@+id/buttonChange"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:text="@string/login_button_dhange" />

<Button
    android:id="@+id/buttonDisable"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:text="@string/login_button_disable" />