Как убрать лишний пробел между представлениями в макете ограничений? - PullRequest
1 голос
/ 20 января 2020

Я создал макет xml для диалога, используя макет ограничения в android studio. Под кнопками есть дополнительное пространство. Для представлений не задан отступ, а нижнее поле также равно 0dp. Под кнопками остается пустое пространство. Я хочу выровнять кнопки в нижней части макета ограничения без пробелов. Как убрать это место?

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".MainActivity">

<TextView
    android:id="@+id/alert_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginBottom="8dp"
    android:text="TextView"
    android:textAlignment="center"
    android:textSize="22sp"
    app:layout_constraintBottom_toTopOf="@+id/exit"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<com.google.android.material.button.MaterialButton
    android:id="@+id/exit"
    style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:text="Exit"
    android:textSize="18sp"
    app:cornerRadius="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/cancel"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/alert_text" />

<com.google.android.material.button.MaterialButton
    android:id="@+id/cancel"
    style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Cancel"
    android:textSize="18sp"
    app:cornerRadius="0dp"
    app:layout_constraintBottom_toBottomOf="@+id/exit"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/exit"
    app:layout_constraintTop_toTopOf="@+id/exit" />
</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Установите insetTop и insetBottom на 0dp в вашем button, чтобы удалить дополнительное пространство вокруг кнопки, как показано ниже:

<com.google.android.material.button.MaterialButton
    android:id="@+id/exit"
    style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:text="Exit"
    android:textSize="18sp"
    app:cornerRadius="0dp"

    android:insetTop="0dp"
    android:insetBottom="0dp"

    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/cancel"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/alert_text" />
0 голосов
/ 20 января 2020

Учитывая, что на кнопках нет атрибутов marginBottom, этот разрыв возникает из-за фактического фона кнопки. Есть 2 способа решить эту проблему, все еще используя кнопку:

1) Использовать различный фон для каждой кнопки (даже если вы используете невыделенный фон, на нем все еще есть поле)

2) Использовать отрицательное поле для атрибута android:layout_marginBottom. Вы можете найти точное значение методом проб и ошибок, я верю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...