我有几个按钮,应该是正方形。但是我无法将高度设置为与宽度相同。我该怎么办?
我试图用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>
答案 0 :(得分: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"/>
答案 1 :(得分: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
中答案 2 :(得分:0)
这可以通过使用dimens文件中的值来实现。如果res/values
文件夹中没有该文件,请在此处创建一个名为dimens.xml
的XML文件。然后添加一个dimen值,说明要用于按钮的高度和宽度的值:
<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>
这将为按钮添加相同的高度宽度。
答案 3 :(得分:0)
如果您不想将其放在ConstraintLayout中(这是最简单的答案,@ SirkarReddy已经建议了它)-子类化Button并重写onMeasure函数,以便它始终将自身测量为正方形。没有对代码进行一些修改,就没有内置的方法可以在RelativeLayout或LinearLayout中获得所需的行为。