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