Java 单击EditText字段后,RecyclerView项失去匹配\u父项设置

Java 单击EditText字段后,RecyclerView项失去匹配\u父项设置,java,android,android-recyclerview,Java,Android,Android Recyclerview,你好,我有一个非常奇怪的问题,它让我发疯。我有一个DialogFragment,里面有一个RecyclerView。我的RecyclerView有一个自定义适配器,DialogFragment和RecyclerView Adpeter都有一个自定义XML布局 当我打开对话框时,视图很好。应该如此 当我在EditText字段(图中的黄色框)内单击,屏幕上的键盘弹出时,问题出现了。然后,由于某种原因,整个布局混乱,其行为与我定义的“包裹内容”相同 我不知道为什么会这样。我的代码似乎是正确的,在查

你好,我有一个非常奇怪的问题,它让我发疯。我有一个DialogFragment,里面有一个RecyclerView。我的RecyclerView有一个自定义适配器,DialogFragment和RecyclerView Adpeter都有一个自定义XML布局

当我打开对话框时,视图很好。应该如此

当我在EditText字段(图中的黄色框)内单击,屏幕上的键盘弹出时,问题出现了。然后,由于某种原因,整个布局混乱,其行为与我定义的“包裹内容”相同

我不知道为什么会这样。我的代码似乎是正确的,在查看其他类似的问题后,代码对我来说是正确的

这是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>
下面是片段布局

<?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>

您可以尝试将以下内容添加到DialogFragment的约束显示中:

android:fitsSystemWindows="true"


添加对话框片段XMLlayout@MatPag好的,我添加了对话框Fragment layout1)RecyclerView应该具有wrap_内容高度,2)检查清单中是否有一些
android:WindowsofInputMode
,如果是,请尝试从主机活动中删除它们。3) 在RecyclerView行布局中,使用如此多的固定宽度和高度总是很危险的,并且可能会导致奇怪的问题,如果您在EditText和TextViews height使用换行内容时使用
app:layout\u constraintWidth\u percent
的百分比值来保持固定的纵横比,效果会更好
android:fitsSystemWindows="true"
<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" />