如何设置按钮的高度,使其与宽度相同?

问题描述 投票:-1回答:4

我有几个按钮,应该是正方形。但我无法将高度设置为与宽度相同。我怎么做?

我尝试用layout_constraintDimensionRatio解决问题,但它没有用,高度只有0。

这是代码:

<Button
            android:id="@+id/grid_11"
            style="@style/Widget.AppCompat.Button.Small"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"></Button>

这就是我试过的:

<Button
            android:id="@+id/grid_11"
            style="@style/Widget.AppCompat.Button.Small"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintDimensionRatio="1:1"
            android:layout_weight="1"></Button>
android xml button size
4个回答
1
投票

高度为“0”的原因是您没有正确设置按钮的约束。设置适当的约束,如下所示,它将起作用。

<Button
        android:id="@+id/grid_11"
        style="@style/Widget.AppCompat.Button.Small"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintDimensionRatio="1:1"/>

0
投票

这可以通过使用维度文件中的值来实现。如果它不在res/values文件夹中,那么在那里创建一个名为dimens.xml文件的XML文件。然后添加一个维数值,说明您要用于按钮高度和宽度的值:

<dimen name="btn_size">100dp</dimen>

然后你可以像这样指定按钮:

<Button
            android:id="@+id/grid_11"
            style="@style/Widget.AppCompat.Button.Small"
            android:layout_width="@dimen/btn_size"
            android:layout_height="@dimen/btn_size"
            android:layout_weight="1"></Button>

这将为按钮添加相同的高度宽度。


0
投票

更改-

android:layout_width="wrap_content"
android:layout_height="wrap_content"

至-

android:layout_width="@dimen/square_button_size"
android:layout_height="@dimen/square_button_size"

并添加

<dimen name="square_button_size">50dp</dimen>

在res / values / dimen.xml中


0
投票

如果您不想将它放在ConstraintLayout中(这是最简单的答案,@ SirkarReddy已经建议它) - 子类Button并覆盖onMeasure函数,以便它始终将自身测量为正方形。没有内置的方法可以在RelativeLayout或LinearLayout中获得所需的行为,而无需在代码中进行任何黑客攻击。

© www.soinside.com 2019 - 2024. All rights reserved.