Как установить высоту моей кнопки, чтобы она соответствовала ширине? - PullRequest
0 голосов
/ 23 марта 2019

У меня есть пара кнопок, которые должны быть квадратными.Но я не могу установить высоту, равную ширине.Как мне это сделать?

Я пытался решить проблему с 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>

Ответы [ 4 ]

1 голос
/ 23 марта 2019

Причина, по которой высота была "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 голосов
/ 23 марта 2019

Если вы не хотите помещать это в ConstraintLayout (который является самым простым ответом, @SirkarReddy уже предложил это) - создайте подкласс Button и переопределите функцию onMeasure, чтобы она всегда измеряла себя как квадрат.Не существует встроенного способа получить желаемое поведение в RelativeLayout или LinearLayout без некоторого взлома кода.

0 голосов
/ 23 марта 2019

Этого можно добиться, используя значения из файла измерений. Если его нет в папке res/values, создайте там XML-файл с именем dimens.xml file. Затем добавьте значение измерения с указанием вашего значения, которое вы хотите использовать для высоты и ширины кнопки:

<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 голосов
/ 23 марта 2019

Change-

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

* 1004 To-*

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

и добавьте

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

in res / values ​​/ dimension.xml

...