如何使按钮大小相同

5
这是我的xml代码,这是结果,但我想让这3个按钮(一起)占据与最大按钮相同的大小,类似于上面的图片,我应该在哪里更改我的布局?
这是我的代码: 这是结果 这是我想要的效果: 但我希望保持这样 我的xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@android:color/transparent"
              android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="#FFA500"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="10dp"
            android:background="#FFA500"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textoPoup1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
                android:textColor="@android:color/white"/>

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

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

                <Button
                    android:id="@+id/nota40"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="50"/>

                <Button
                    android:id="@+id/nota80"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="90"/>
            </LinearLayout>


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

                <Button
                    android:id="@+id/nota120"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="110"/>

                <Button
                    android:id="@+id/nota160"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="170"/>

                <Button
                    android:id="@+id/nota200"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="300"/>
            </LinearLayout>

            <Button
                android:id="@+id/proxima1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Next"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

3
使用layout_weight进行尝试。 - ρяσѕρєя K
1
每个小按钮应该像这样:<Button android:id="@+id/nota120" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="100" android:text="110"/> - Kingfisher Phuoc
嵌套布局是一种反模式,因为它对性能不利。 - Phantômaxx
@BobMalooga 我一直想知道如何在不嵌套的情况下获得期望的外观(我已经习惯了主要使用LinearLayout,偶尔使用Frame/Relative)。 - Vucko
1
@BobMalooga 真是太棒了... 简直让我惊叹不已。你这家伙真的让我开心。感谢你,伙计! - Vucko
显示剩余2条评论
3个回答

13

可以轻松地使用 layout_weight 针对每个按钮进行如下设置:

<Button
        android:id="@+id/nota0"
        android:layout_width="0"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="0"/>

这样,每个按钮将恰好占据其父元素宽度的1/3,而其父元素则占据整个屏幕宽度。您仍然可以通过调整边距和填充来控制按钮之间的间距。

编辑

您可以使用 ConstraintLayout 中的和应用水平或垂直权重, 如 app:layout_constraintHorizontal_weight="1",无需嵌套即可更轻松地执行相同的操作。


2
在包含3个按钮的LinearLayout中添加:
android:orientation="horizontal"

现在,对于所有三个按钮,请设置以下内容:
android:layout_width="0dp"
android:layout_weight="1"

类似这样:

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

            <Button
                android:id="@+id/nota0"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="0"/>

            <Button
                android:id="@+id/nota40"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="50"/>

            <Button
                android:id="@+id/nota80"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="90"/>
        </LinearLayout>

然后您可以添加适当的边距:

对于第一个按钮,只需将leftMargin设置为xdp,将rightMargin设置为x/2dp。 对于第二个按钮,将左右边距都设置为xdp。 对于第三个按钮,将左边距设置为x/2dp,将右边距设置为xdp。


2
在线性布局中,我们可以给每个子元素添加layout_weight属性来指定它的尺寸权重。如果layout_width="0dp",则会根据权重计算该元素的宽度;如果layout_height="0dp",则会根据权重计算该元素的高度。
它会取所有元素权重的平均值,例如如果所有元素都拥有layout_weight="1",那么每个元素将分配其父容器宽度的1/3。
因此在你的情况下,你需要将相同的权重分配给所有元素,并将layout_width设置为"0dp",这样可以实现等大小的按钮。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="@android:color/transparent"
          android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="#FFA500"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:background="#FFA500"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textoPoup1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
            android:textColor="@android:color/white"/>

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

            <Button
                android:id="@+id/nota0"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="0"/>

            <Button
                android:id="@+id/nota40"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="50"/>

            <Button
                android:id="@+id/nota80"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="90"/>
        </LinearLayout>


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

            <Button
                android:id="@+id/nota120"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="110"/>

            <Button
                android:id="@+id/nota160"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="170"/>

            <Button
                android:id="@+id/nota200"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="300"/>
        </LinearLayout>

        <Button
            android:id="@+id/proxima1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Next"/>
    </LinearLayout>
</LinearLayout>
</LinearLayout>

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