#android #android-constraintlayout
#Android #android-constraintlayout
Вопрос:
У меня есть 3 основных вида, Fragment
нарисованных на ConstraintLayout
.
- Заголовок
- Прокручиваемый контент
- Нижний колонтитул
Верхний и нижний колонтитулы должны находиться в фиксированном положении, а средний контент / представления должны прокручиваться. В моем случае среднее содержимое перекрывает верхний и нижний колонтитулы
Ниже мой 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
и добавьте минимальный интервал, установив поля, чтобы оно занимало весь экран.