屏幕按钮宽度一半

42

我在一个线性布局中有一个按钮,希望这个按钮占据其父布局宽度的一半。是否可以在布局xml中实现这一点。

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:padding="6dp">

    <Button
        android:id="@+id/buttonCollect"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="@string/hello"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"/>

</LinearLayout> 

我的问题与这个问题Assign width to half available screen width declaratively非常相似,只是我只有一个按钮。


4个回答

80

是的,解决方案非常类似于那个问题,但您还需要设置父LinearLayout的weightSum:

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    android:padding="6dp"
    android:weightSum="2">

    <Button
        android:id="@+id/buttonCollect"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:text="@string/hello"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:layout_weight="1" />

</LinearLayout> 

2
哦,如果你真的想要一半,从0dp宽度开始就像其他人提到的那样通常是一个好主意。 - kabuko
我有一个卡片视图作为父视图,其中包含相对布局。我尝试了上述技术,但没有起作用。 - Prashanth Debbadwar

5

您需要设置0.5(一半)的权重,并将宽度设置为0。

<Button
    android:id="@+id/buttonCollect"
    android:layout_width="0dip"
    android:layout_weight="0.5"
    android:layout_height="match_parent"
    android:text="@string/hello"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"/>

我有一个卡片视图作为父视图,在其中有相对布局。我使用了上述技术,但没有起作用。 - Prashanth Debbadwar
1
@PrashanthDebbadwar 提出一个新问题,提供自己的 XML。在三年前的回答下面写评论是没有用的。 - Knossos

1

在Android L上,这些解决方案都对我无效。我必须按照以下方式使用wrap_content:

<Button
    android:layout_gravity="center"
    android:id="@+id/btnSignin"
    android:layout_width="wrap_content"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:layout_height="wrap_content"
    android:text="@string/btn_signin"
    android:layout_marginBottom="@dimen/activity_vertical_margin" />

0

与您发布的问题完全相同,只需使用虚拟视图即可:

<View 
android:weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接