Как сделать так, чтобы фрагмент помещался в FrameLayout при всех размерах экрана?

#android #xml #android-layout #android-fragments

#Android #xml #android-layout #android-фрагменты

Вопрос:

Я разрабатываю приложение, в котором я хочу показывать несколько фрагментов в контейнере (Framelayout) один за другим. Я хочу, чтобы мои фрагменты помещались в framelayout без того, чтобы их части выходили за пределы экрана.

Я хочу это:

Я хочу это:

Но получение этого:

Но я понимаю это:

Вот мой фрагмент кода:

 <android.support.constraint.ConstraintLayout
    android:id="@ id/relativeLayout"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginStart="24dp"
    android:layout_marginEnd="24dp"
    android:layout_marginBottom="24dp"
    android:background="@drawable/grey_border_circular_rect"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@ id/guideline3"
    app:layout_constraintVertical_bias="0.0">


     <FrameLayout
        android:id="@ id/fragment_holder"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="32dp"
        app:layout_constraintBottom_toTopOf="@ id/elipse1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </FrameLayout>

    <android.support.constraint.Guideline
        android:id="@ id/guideline4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_end="32dp" />


    <ImageView
        android:id="@ id/elipse1"
        android:layout_width="14dp"
        android:layout_height="14dp"
        app:layout_constraintEnd_toStartOf="@ id/elipse2"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/guideline4"
        app:srcCompat="@drawable/ic_elipse_filled"
        tools:layout_editor_absoluteY="568dp" />

    <ImageView
        android:id="@ id/elipse2"
        android:layout_width="14dp"
        android:layout_height="14dp"
        android:layout_marginStart="8dp"
        app:layout_constraintBottom_toBottomOf="@ id/elipse1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@ id/elipse1"
        app:srcCompat="@drawable/ic_elipse_blank" />
</android.support.constraint.ConstraintLayout>
  

Я не могу предоставить полный XML-код, поскольку у меня есть некоторые ограничения на код. Но корневой макет также является ConstraintLayout.

fragment.xml

 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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">

<TextView
    android:id="@ id/otpVerificationTV"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:text="OTP Verification"
    android:textColor="@color/blue"
    android:textSize="24sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<View
    android:id="@ id/view2"
    android:layout_width="wrap_content"
    android:layout_height="1dp"
    android:layout_marginTop="8dp"
    android:background="@color/btn_grey"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@ id/otpVerificationTV" />

<TextView
    android:id="@ id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="40dp"
    android:layout_marginEnd="8dp"
    android:text="We sent you a code"
    android:textColor="@android:color/black"
    android:textSize="26sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@ id/view2" />

<Button
    android:id="@ id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="56dp"
    android:background="@color/transparent"
    android:text="Resend OTP"
    android:textAllCaps="false"
    android:textColor="@color/grey_secondary"
    android:textSize="20sp"
    app:layout_constraintEnd_toStartOf="@ id/view3"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintHorizontal_chainStyle="packed"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@ id/textView6" />

<View
    android:id="@ id/view3"
    android:layout_width="3dp"
    android:layout_height="30dp"
    android:layout_marginStart="10dp"
    android:background="@color/grey_secondary"
    app:layout_constraintBottom_toBottomOf="@ id/textView7"
    app:layout_constraintEnd_toStartOf="@ id/textView7"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@ id/textView5" />

<TextView
    android:id="@ id/textView7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="10dp"
    android:textColor="@color/blue"
    android:textSize="20sp"
    android:textStyle="bold"
    app:layout_constraintBaseline_toBaselineOf="@ id/textView5"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@ id/view3"
    tools:text="29 sec" />

<TextView
    android:id="@ id/textView8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="24dp"
    android:layout_marginTop="56dp"
    android:text="OTP"
    android:textColor="@android:color/black"
    android:textSize="26sp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@ id/textView5" />

<LinearLayout
    android:id="@ id/linearLayout"
    android:layout_width="262dp"
    android:layout_height="48dp"
    android:layout_marginTop="8dp"
    android:background="@color/blue"
    android:orientation="vertical"
    app:layout_constraintStart_toStartOf="@ id/textView8"
    app:layout_constraintTop_toBottomOf="@ id/textView8" />

<Button
    android:id="@ id/button"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="72dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:background="@drawable/blue_circular_rect"
    android:elevation="@dimen/btn_elevation"
    android:text="Next"
    android:textAllCaps="false"
    android:textColor="@color/white"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="@ id/linearLayout"
    app:layout_constraintTop_toBottomOf="@ id/linearLayout" />
</android.support.constraint.ConstraintLayout>
  

Итак, есть ли какой-либо возможный способ, которым я могу заставить фрагмент поместиться на любом размере экрана, и все это будет видно внутри framelayout.

Ответ №1:

Приведенный ниже код поможет с вашим fragment.xml файл. Вы не указали дополнительные значения файлов, означающие цветовой код, файл строки и другие. Итак, ниже приведены некоторые изменения из вашего файла, такие как данные, доступные для рисования, и связанные со значением.

Заполните, не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы, связанные с приведенными ниже представлениями. Если приведенный ниже код подходит для вас, пожалуйста, одобрите этот ответ.

 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="match_parent">

    <TextView
        android:id="@ id/otpVerificationTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:text="OTP Verification"
        android:textColor="@android:color/holo_blue_light"
        android:textSize="24sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@ id/view2"
        android:layout_width="wrap_content"
        android:layout_height="1dp"
        android:layout_marginTop="8dp"
        android:background="@color/colorGrey"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/otpVerificationTV" />

    <TextView
        android:id="@ id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:text="We sent you a code"
        android:textColor="@android:color/black"
        android:textSize="26sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="@id/group2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@id/group2" />

    <android.support.constraint.Group
        android:id="@ id/group2"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:constraint_referenced_ids="textView6"
        app:layout_constraintBottom_toTopOf="@id/group"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/view2" />

    <android.support.constraint.Group
        android:id="@ id/group"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:constraint_referenced_ids="view3,textView7,textView5"
        app:layout_constraintBottom_toTopOf="@id/group1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/group2" />

    <android.support.constraint.Group
        android:id="@ id/group1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:constraint_referenced_ids="linearLayout,textView8"
        app:layout_constraintBottom_toTopOf="@id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/group" />

    <Button
        android:id="@ id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:text="Resend OTP"
        android:textAllCaps="false"
        android:textColor="@color/colorGrey"
        android:textSize="20sp"
        app:layout_constraintEnd_toStartOf="@ id/view3"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintStart_toStartOf="@id/group"
        app:layout_constraintTop_toTopOf="@ id/group" />

    <View
        android:id="@ id/view3"
        android:layout_width="3dp"
        android:layout_height="30dp"
        android:layout_marginStart="10dp"
        android:background="@color/colorGrey"
        app:layout_constraintBottom_toBottomOf="@ id/textView7"
        app:layout_constraintEnd_toStartOf="@ id/textView7"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@ id/textView5" />

    <TextView
        android:id="@ id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:textColor="@android:color/holo_blue_light"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintBaseline_toBaselineOf="@ id/textView5"
        app:layout_constraintEnd_toEndOf="@id/group"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@ id/view3"
        tools:text="29 sec" />

    <TextView
        android:id="@ id/textView8"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:text="OTP"
        android:textColor="@android:color/black"
        android:textSize="26sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@id/group1" />

    <LinearLayout
        android:id="@ id/linearLayout"
        android:layout_width="262dp"
        android:layout_height="48dp"
        android:layout_marginTop="8dp"
        android:background="@android:color/holo_blue_light"
        android:orientation="vertical"
        app:layout_constraintStart_toStartOf="@ id/textView8"
        app:layout_constraintTop_toBottomOf="@ id/textView8" />

    <Button
        android:id="@ id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:background="@android:color/holo_blue_light"
        android:elevation="1dp"
        android:text="Next"
        android:textAllCaps="false"
        android:textColor="@android:color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@ id/linearLayout"
        app:layout_constraintTop_toBottomOf="@ id/group1" />
</android.support.constraint.ConstraintLayout>