Странное поведение Constraint Layout при добавлении DatePicker/TimePicker

Поместил Constraint Layout внутри Scroll View для возможности скролла. Но при добавлении DatePicker (или же TimePicker) в центре появляется пустая область. Пробовал изменить высоту элемента EditText с id message, но дело оказалось не в нём. Если убрать ScrollView, то всё становится в порядке, но теряется возможность скролла. Значит, накосячил где-то с шириной/высотой, но не могу найти где.

XML файл макета:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    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="match_parent"
    android:fillViewport="true">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/topText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"

            android:background="#ffebee"
            android:fontFamily="sans-serif"
            android:text="Hello, User!"
            android:textColor="#f44336"
            android:textSize="26sp"

            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"

            android:hint="Введите имя"
            android:inputType="text"
            android:maxLines="1"

            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/topText" />

        <EditText
            android:id="@+id/message"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginTop="16dp"

            android:gravity="top"
            android:hint="Введите сообщение"
            android:inputType="textMultiLine|textCapSentences"

            app:layout_constraintBottom_toTopOf="@+id/inputButton"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/name" />

        <Button
            android:id="@+id/inputButton"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"

            android:background="#ede7f6"
            android:fontFamily="casual"
            android:onClick="inputInfo"
            android:text="Ввод"
            android:textAlignment="center"
            android:textAllCaps="true"
            android:textColor="#7e57c2"
            android:textSize="26sp"

            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/nameText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"

            android:text="Name: "
            android:textSize="26sp"

            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/inputButton" />

        <TextView
            android:id="@+id/messageText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"

            android:text="Message: "
            android:textSize="26sp"

            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/nameText" />

        <TextView
            android:id="@+id/checkboxText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="24sp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/messageText" />

        <CheckBox
            android:id="@+id/checkbox1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onCheckboxClicked"
            android:text="Checkbox 1"

            android:textSize="18sp"

            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/checkboxText" />

        <CheckBox
            android:id="@+id/checkbox2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onCheckboxClicked"
            android:text="Checkbox 2"

            android:textSize="18sp"

            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/checkbox1" />

        <ToggleButton
            android:id="@+id/toggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onToggleClicked"
            android:textOff="Выключено"
            android:textOn="Включено"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/checkbox2" />

        <TextView android:id="@+id/radioText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="26sp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/toggle"/>

        <RadioGroup
            android:id="@+id/radios"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/radioText">

            <RadioButton android:id="@+id/java"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Java"
                android:onClick="onRadioButtonClicked"/>
            <RadioButton android:id="@+id/kotlin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Kotlin"
                android:onClick="onRadioButtonClicked"/>
        </RadioGroup>

        <TextView android:id="@+id/dateTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="26sp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/radios" />

        <DatePicker android:id="@+id/datePicker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:datePickerMode="calendar"
            android:calendarViewShown="false"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/dateTextView" />



    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

Вот так макет выглядел до добавления DatePicker/TimePicker:

до

И вот так после добавления (весь остальной контент съехал далеко вниз):

после


Ответы (1 шт):

Автор решения: y0nkers

Нашёл ошибку. Раньше позиционировал кнопку "Ввод" по центру и забыл это убрать. И как выяснилось, если устанавливать атрибут app:layout_constraintBottom_toBottomOf=“parent”, то ScrollView будет работать неправильно. Убрал его в кнопке и всё стало выглядеть хорошо.

→ Ссылка