Фрагмент добавлен в неправильную позицию при прокрутке другого фрагмента - PullRequest
0 голосов
/ 29 мая 2020

У меня следующая настройка:

<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="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <FrameLayout
        android:id="@+id/frame_main"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <FrameLayout
        android:id="@+id/frame_overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Внутри frame_main - это основное содержимое, и в зависимости от инициированного действия фрагмент добавляется как наложение в frame_overlay. Проблема здесь в том, что представление root для frame_main является вложенным просмотром прокрутки, и когда я прокручиваю вниз, фрагмент, добавленный в frame_overlay, позиционируется неправильно. Он расположен не внутри текущего экрана (в данном случае в позиции прокрутки), а в верхней части прокрутки (поэтому при прокрутке всегда есть часть, отсутствующая в верхней части фрагмента наложения).

Есть ли возможность указать новому фрагменту расшириться до текущей позиции представления? Думаю, я мог бы программно прокрутить до верхней части прокрутки, а затем раздуть новый фрагмент, но это было бы неприятным хаком.

...