android: isScrollContainer = false не работает после перехода - PullRequest
1 голос
/ 17 апреля 2020

android: IsScrollContainer не работает после перехода на экран.

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

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/top_layout"
            android:layout_width="0dp"
            android:layout_height="66dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent">

        </androidx.constraintlayout.widget.ConstraintLayout>

        <ScrollView
            android:id="@+id/scroll_view"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:isScrollContainer="false"
            app:layout_constraintTop_toBottomOf="@id/top_layout"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toTopOf="@id/bottom1">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:isScrollContainer="false"
                android:padding="16dp">

                <androidx.appcompat.widget.AppCompatEditText
                    android:id="@+id/last_name_field"
                    android:layout_width="0dp"
                    android:layout_height="34dp"
                    android:layout_marginTop="8dp"
                    android:paddingStart="8dp"
                    android:paddingEnd="8dp"
                    app:hintAnimationEnabled="false"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    android:inputType="text"
                    android:textSize="14sp"/>

            </androidx.constraintlayout.widget.ConstraintLayout>

        </ScrollView>

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/bottom1"
            android:layout_width="0dp"
            android:layout_height="74dp"
            android:background="@color/colorPrimaryDark"
            app:layout_constraintTop_toBottomOf="@id/scroll_view"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toTopOf="@id/bottom2">

        </androidx.constraintlayout.widget.ConstraintLayout>

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/bottom2"
            android:layout_width="0dp"
            android:layout_height="66dp"
            android:background="@color/colorPrimary"

            app:layout_constraintTop_toBottomOf="@id/bottom1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent">

        </androidx.constraintlayout.widget.ConstraintLayout>

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

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

Когда отображается клавиатура, я не хочу отображать нижний макет на клавиатуре, поэтому я установил для isScrollContainer значение false.

Мое приложение использует NavController выполнять переходы экрана, но в следующих случаях isScrollContainer может не работать.

(TargetFragment находится над макетом.)

  • Случай, который работает.

(Выберите меню «Ящик навигации») -> TargetFragment

  • Случаи, которые не работают.

(Выберите меню «Ящик навигации») -> OtherFrag mnet -> ( navigate) -> TargetFragment (не работает)

Почему isScrollContaier = false не действует после навигации по NavController, даже если макет точно такой же?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...