Представления перекрываются, компоновка ограничений?

#android #android-constraintlayout

#Android #android-constraintlayout

Вопрос:

У меня есть 3 основных вида, Fragment нарисованных на ConstraintLayout .

  1. Заголовок
  2. Прокручиваемый контент
  3. Нижний колонтитул

Верхний и нижний колонтитулы должны находиться в фиксированном положении, а средний контент / представления должны прокручиваться. В моем случае среднее содержимое перекрывает верхний и нижний колонтитулы

Ниже мой xml код

    <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout 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:background="@android:color/white"
tools:context=".home.BookingFragment">

<!-- TODO: Update blank fragment layout -->
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@ id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="10dp"
        android:gravity="center"
        android:text="REGISTRATION FORM"
        android:textColor="@android:color/black"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintTop_toTopOf="parent" />

    <ScrollView
        android:id="@ id/scrollContent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="20dp"
        android:layout_marginBottom="20dp"
        app:layout_constraintBottom_toTopOf="@ id/bookingLayout"
        app:layout_constraintTop_toBottomOf="@ id/title">

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


            <TextView
                android:id="@ id/nameTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Name"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toTopOf="parent" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:hint="Dr. Ramesh Tendulkar"
                android:maxLength="30"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/nameTitle" />

            <TextView
                android:id="@ id/ageTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Age"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/name" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/age"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:hint="35"
                android:inputType="number"
                android:maxLength="2"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/ageTitle" />

            <TextView
                android:id="@ id/genderTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Gender"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/age" />

            <TextView
                android:id="@ id/gender"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:drawableRight="@drawable/ic_arrow_down"
                android:padding="10dp"
                android:text="Male"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/genderTitle" />

            <TextView
                android:id="@ id/designationTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Designation"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/gender" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/designation"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:hint="Senior"
                android:maxLength="40"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/designationTitle" />

            <TextView
                android:id="@ id/instituteTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Institute"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/designation" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/institution"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:hint="Liver Foundation "
                android:maxLength="40"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/instituteTitle" />

            <TextView
                android:id="@ id/addressTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Address"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/institution" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/address"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:gravity="top"
                android:hint="AM-40, DELHI"
                android:maxLength="100"
                android:minHeight="80dp"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/addressTitle" />

            <TextView
                android:id="@ id/cityTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="City"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/address" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/city"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:gravity="top"
                android:hint="DELHI"
                android:maxLength="40"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/cityTitle" />

            <TextView
                android:id="@ id/mobileTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Mobile"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/city" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/mobile"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:gravity="top"
                android:hint="999999999"
                android:inputType="number"
                android:maxLength="10"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/mobileTitle" />

            <TextView
                android:id="@ id/emailTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Email"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@ id/mobile" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@ id/email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@drawable/edittext_bg"
                android:gravity="top"
                android:hint="999999999"
                android:inputType="textEmailAddress"
                android:maxLength="40"
                android:padding="10dp"
                android:textColor="@android:color/black"
                android:textSize="16sp"
                app:layout_constraintTop_toBottomOf="@ id/emailTitle" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>


    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@ id/bookingLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <TextView
            android:id="@ id/fess"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="REGISTRATION FEES : Rs.2000"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:textStyle="bold"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@ id/bookEvent"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/button_bg"
            android:text="BOOK"
            android:textColor="@android:color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@ id/fess" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center"
            android:text="Drawn in favor of Foundation"
            android:textColor="@android:color/black"
            android:textSize="15sp"
            app:layout_constraintTop_toBottomOf="@ id/bookEvent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>


  </FrameLayout>
  

И результат, который я получаю, это
введите описание изображения здесь

Как мне избежать перекрытия?

Ответ №1:

Используйте 0dp для высоты вашего ScrollView вместо wrap_content.

  <ScrollView
    android:id="@ id/scrollContent"
    android:layout_width="match_parent"
    android:layout_height="0dp"   <!--Change Here-->
    android:layout_marginStart="20dp"
    android:layout_marginTop="20dp"
    android:layout_marginEnd="20dp"
    android:layout_marginBottom="20dp"
    app:layout_constraintBottom_toTopOf="@ id/bookingLayout"
    app:layout_constraintTop_toBottomOf="@ id/title">
  

Комментарии:

1. Если содержимое внутри RelativeLayout не такое большое (т. Е. Если нормальным поведением является выделение пространства по размеру, но при открытии клавиатуры все сжимается), добавьте android:fillViewport="true" к ScrollView и добавьте минимальный интервал, установив поля, чтобы оно занимало весь экран.