Элементы RecyclerView теряют настройку MATCH_PARENT после нажатия на поле EditText - PullRequest
0 голосов
/ 03 апреля 2020

Здравствуйте, у меня очень странная проблема, которая сводит меня с ума. У меня есть DialogFragment и внутри этого RecyclerView. У меня есть специальный адаптер для моего RecyclerView и пользовательский макет XML для DialogFragment и RecyclerView Adpater.

Когда я открываю диалоговое окно, вид просто отлично. Как и должно быть.

Normal behavior when dialog opens

Проблема возникает, когда я щелкаю внутри поля EditText (желтое поле на рисунке) и появляется экранная клавиатура , Затем по какой-то причине весь макет портится, и он ведет себя так, как я определил его как WRAP_CONTENT.

Problematic behavior after clicking on the TextEdit field

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

Это пользовательский макет RecyclerView

<?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="wrap_content">

    <TextView
        android:id="@+id/packitemnoField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableStart="@drawable/ic_barcode_small"
        android:drawablePadding="4dp"
        android:paddingStart="4dp"
        android:paddingTop="2dp"
        android:paddingEnd="4dp"
        android:paddingBottom="2dp"
        android:textAlignment="viewStart"
        android:textColor="#000000"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="0062020512845" />

    <TextView
        android:id="@+id/qtyDescTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:layout_marginTop="4dp"
        android:text="@string/tweightLabel"
        android:textSize="14sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/packDescField" />

    <TextView
        android:id="@+id/RemainsDescTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="4dp"
        android:text="@string/weightLabel"
        android:textSize="14sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="@+id/qtyDescTV"
        app:layout_constraintTop_toBottomOf="@+id/qtyDescTV" />

    <TextView
        android:id="@+id/thWeightField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="2dp"
        android:textColor="@color/darkGrey"
        android:textStyle="bold"
        app:layout_constraintStart_toEndOf="@+id/qtyDescTV"
        app:layout_constraintTop_toTopOf="@+id/qtyDescTV"
        tools:text="9999 kg." />

    <TextView
        android:id="@+id/weightField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="2dp"
        android:textColor="@color/successGreen"
        android:textStyle="bold"
        app:layout_constraintStart_toEndOf="@+id/qtyDescTV"
        app:layout_constraintTop_toTopOf="@+id/RemainsDescTV"
        tools:text="9999 kg." />

    <TextView
        android:id="@+id/packDescField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:textColor="@color/od_color1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/packitemnoField"
        tools:text="ALBIO / ΠΡΟΦΙΛ ΠΕΛΑΤΗ" />

    <ImageView
        android:id="@+id/kgIcon"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginEnd="4dp"
        android:tint="@color/darkGrey"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="@+id/newWeightInput"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/newWeightInput"
        app:srcCompat="@drawable/ic_weight" />

    <EditText
        android:id="@+id/newWeightInput"
        android:layout_width="69dp"
        android:layout_height="36dp"
        android:layout_marginEnd="2dp"
        android:background="@drawable/border_qty"
        android:ems="10"
        android:inputType="number"
        android:maxLength="4"
        android:padding="4dp"
        android:textAlignment="center"
        android:textColor="@color/colorSecondaryVariant"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/kgIcon"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="9999" />

    <TextView
        android:id="@+id/packDateField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="4dp"
        android:text="26/03/2020"
        android:textSize="12sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/newWeightLbl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="2dp"
        android:text="@string/newWeight"
        android:textSize="12sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/newWeightInput"
        app:layout_constraintEnd_toStartOf="@+id/newWeightInput"
        app:layout_constraintTop_toTopOf="@+id/newWeightInput" />
</androidx.constraintlayout.widget.ConstraintLayout>

И это код в методе onCreateViewHolder в адаптере

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rvr_package, parent, false);
    return new PackagesViewHolder(view);
}

Вот макет DialogFragment

<?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="wrap_content">

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.5" />

    <Button
        android:id="@+id/updateWeightBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:layout_marginEnd="8dp"
        android:backgroundTint="@color/colorAccent"
        android:text="@string/update"
        app:layout_constraintBottom_toBottomOf="@+id/closeBtn"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/guideline"
        app:layout_constraintTop_toTopOf="@+id/closeBtn" />

    <Button
        android:id="@+id/closeBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="4dp"
        android:text="@string/close"
        app:layout_constraintEnd_toStartOf="@+id/guideline"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/packagesRecyclerView" />

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/packagesRecyclerView"
        android:layout_width="0dp"
        android:layout_height="400dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Вы можете попробовать добавить к вашему ограничениюLayout of DialogFragment эту строку:

android:fitsSystemWindows="true"
0 голосов
/ 03 апреля 2020
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/packagesRecyclerView"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...