SoftInput Keybaord с Adjust Pan Вызывает RecyclerView для разметки дочерних элементов / ломает макет - PullRequest
0 голосов
/ 16 октября 2019

У меня проблема с представлением Recycler и его дочерними элементами.

В настоящее время у меня установлено действие Activity для AdjustPan (также пробовал AdjustResize). У вас есть фрагмент (показанный в GIF), который загружается внутри ConstraintLayout в упражнении.

Когда клавиатура показывает, представления действительно панорамируются, что замечательно, но все дочерние / ViewHolders RecyclerView перемещаются. ... некоторые заканчивают тем, что пропали без вести и с большими промежутками между ними. При закрытии клавиатуры элементы остаются в смещенном / неправильном положении.

Есть ли способ обойти это? Я рассмотрел различные (например, не используя AdjustPan и пытаясь найти верхнюю часть клавиатуры / нижней части окна и просто перемещая EditText в позицию). Я хотел бы "придерживаться рамок", если это возможно, используя готовые инструменты ...

Спасибо за любую помощь.

   <?xml version="1.0" encoding="utf-8"?>

<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"
        android:background="@android:color/white"
        android:clipToPadding="true"
        android:isScrollContainer="false">

    <Button
            android:id="@+id/back"
            style="@style/appButtonStyle"
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:text="Button"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/constraintLayout3" />

    <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/constraintLayout3"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@drawable/menu_gradient"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

        <ImageView
                android:id="@+id/readerProfileImageBackground"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_marginStart="48dp"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:srcCompat="@drawable/online_circle" />

        <androidx.appcompat.widget.AppCompatImageView
                android:id="@+id/readerProfileImage"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_marginStart="3dp"
                android:layout_marginTop="3dp"
                android:layout_marginEnd="3dp"
                android:layout_marginBottom="3dp"
                app:layout_constraintBottom_toBottomOf="@+id/readerProfileImageBackground"
                app:layout_constraintEnd_toEndOf="@+id/readerProfileImageBackground"
                app:layout_constraintStart_toStartOf="@+id/readerProfileImageBackground"
                app:layout_constraintTop_toTopOf="@+id/readerProfileImageBackground"
                app:srcCompat="@drawable/app_accent_button_gradient" />

        <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/readerName"
                style="@style/appPageTitlesWhite"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:text="TextView"
                app:layout_constraintStart_toEndOf="@+id/readerProfileImage"
                app:layout_constraintTop_toTopOf="@+id/readerProfileImage" />

        <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/readerStatus"
                style="@style/appBodyTextSmallWhite"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:alpha="0.7"
                android:text="TextView"
                app:layout_constraintStart_toEndOf="@+id/readerProfileImage"
                app:layout_constraintTop_toBottomOf="@+id/readerName" />
    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintBottom_toTopOf="@+id/sendMessageBar"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/constraintLayout3">

        <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/conversationMessageRecycler"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
                app:layout_constraintBottom_toTopOf="@+id/sendMessageBar"
                app:layout_constraintTop_toBottomOf="@+id/constraintLayout3"
                app:reverseLayout="false"
                tools:layout_editor_absoluteX="16dp" />
    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

    <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/sendMessageBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:animateLayoutChanges="true"
            android:elevation="1dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent">

        <androidx.appcompat.widget.AppCompatEditText
                android:id="@+id/messageToSendEditText"
                style="@style/appBodyText"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:background="@drawable/rounded_edit_text_bg"
                android:ems="10"
                android:gravity="center|start"
                android:hint="@string/EnterYourMessage"
                android:inputType="textLongMessage|textAutoCorrect|textMultiLine|text|textAutoComplete"
                android:lines="3"
                android:maxLines="10"
                android:minLines="3"
                android:paddingStart="12dp"
                android:paddingTop="4dp"
                android:paddingRight="48dp"
                android:paddingBottom="4dp"
                android:textSize="13dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent" />

        <androidx.appcompat.widget.AppCompatImageView
                android:id="@+id/sendMessageButton"
                android:layout_width="40dp"
                android:layout_height="0dp"
                android:layout_marginEnd="16dp"
                app:layout_constraintBottom_toBottomOf="@+id/messageToSendEditText"
                app:layout_constraintEnd_toEndOf="@+id/messageToSendEditText"
                app:layout_constraintTop_toTopOf="@+id/messageToSendEditText"
                app:layout_constraintVertical_bias="0.977"
                app:srcCompat="@drawable/ic_green_send_arrow" />

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

GIF of Issue

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