为什么在应用视图绑定时 Constraintlayout 项目不可见?
Why ConstraintlLayout items are not visible when applying View Binding?
这是 recyclerview
项布局文件:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp">
<com.paypal.android.p2pmobile.common.widgets.BubbleView
android:id="@+id/activity_list_item_contact_image"
android:layout_width="@dimen/ui_size_xl_2"
android:layout_height="@dimen/ui_size_xl_2"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
tools:ignore="ContentDescription"
app:initialsTextSize="@dimen/text_size_primary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:id="@+id/activity_list_item_name"
style="@style/activity_list_item_name"
android:layout_width="0dp"
android:layout_height="@dimen/ui_size_sm"
android:gravity="center|start"
android:text="Abc India Pvt. Ltd."
tools:ignore="HardcodedText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp"/>
<LinearLayout
android:id="@+id/activity_list_item_status_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
app:layout_constraintTop_toBottomOf="@+id/activity_list_item_name"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp" >
<com.paypal.uicomponents.UiBadge
android:id="@+id/activity_list_item_badge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"
android:layout_marginEnd="6dp"
android:text="Due"
app:uiStrokeWidth="0dp"
style="@style/UiBadge.Warning"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/activity_list_item_date"
style="@style/activity_list_item_details"
android:layout_width="wrap_content"
android:layout_height="@dimen/ui_size_xs"
android:gravity="center|start"
android:text="Yesterday"
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/activity_list_item_status_icon"
android:layout_width="@dimen/ui_size_xs"
android:layout_height="@dimen/ui_size_xs"
android:layout_marginEnd="6dp"
android:scaleType="fitXY"
tools:ignore="ContentDescription"
app:srcCompat="@drawable/ui_purchase_protection_alt" />
<TextView
android:id="@+id/activity_list_item_status_text"
style="@style/activity_list_item_details"
android:layout_width="match_parent"
android:layout_height="18dp"
android:gravity="center|start"
android:text="Request Received"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:id="@+id/activity_list_item_notes"
style="@style/activity_list_item_details"
android:layout_width="0dp"
android:maxHeight="@dimen/ui_size_lg"
android:layout_marginTop="4dp"
android:maxLines="2"
android:text="Personal notes - My checks haven't cleared yet hope u could loan me some money say around ."
tools:ignore="HardcodedText"
app:layout_constraintTop_toBottomOf="@+id/activity_list_item_status_container"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp" />
<TextView
android:id="@+id/activity_list_item_status_desc"
style="@style/activity_list_item_details"
android:layout_width="0dp"
android:maxHeight="@dimen/ui_size_lg"
android:layout_marginTop="6dp"
android:ellipsize="end"
android:maxLines="2"
android:text="Abc notes - Waiting for your request to be accepted. Please allow us some time to do this."
tools:ignore="HardcodedText"
app:layout_constraintTop_toBottomOf="@+id/activity_list_item_notes"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp" />
<TextView
android:id="@+id/activity_list_item_amount"
style="@style/UiTextView.Xl.Regular"
android:layout_width="wrap_content"
android:layout_height="@dimen/ui_size_sm"
android:layout_alignParentEnd="true"
android:gravity="center|end"
android:text="9.99"
android:textColor="#737C7F"
android:textSize="18sp"
tools:ignore="HardcodedText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
这个布局看起来像这样:
当我以正常方式实现 recyclerview adpater 时,此布局看起来不错。但是,当在 recyclerview 适配器中使用 View Binding
时, 只有那些 layout_width
未设置为 0dp
的元素可见。 UI 个具有 0dp
的元素不可见 。
如果我使用 RelativeLayout
而不是 ConstarintLayout. But, I want to use
ConstraintLayout`,这个问题就会得到解决。
那么,可能是什么问题?我该如何解决这个问题?
我解决了这个问题。我从这个
替换了onCreateViewHolder()
中的代码
ActivitySummaryListTxnItemV2Binding.inflate(LayoutInflater.from(container.getContext()));
对此:
ActivitySummaryListTxnItemV2Binding.inflate(LayoutInflater.from(container.getContext()), container, false);
这是 recyclerview
项布局文件:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp">
<com.paypal.android.p2pmobile.common.widgets.BubbleView
android:id="@+id/activity_list_item_contact_image"
android:layout_width="@dimen/ui_size_xl_2"
android:layout_height="@dimen/ui_size_xl_2"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
tools:ignore="ContentDescription"
app:initialsTextSize="@dimen/text_size_primary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:id="@+id/activity_list_item_name"
style="@style/activity_list_item_name"
android:layout_width="0dp"
android:layout_height="@dimen/ui_size_sm"
android:gravity="center|start"
android:text="Abc India Pvt. Ltd."
tools:ignore="HardcodedText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp"/>
<LinearLayout
android:id="@+id/activity_list_item_status_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
app:layout_constraintTop_toBottomOf="@+id/activity_list_item_name"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp" >
<com.paypal.uicomponents.UiBadge
android:id="@+id/activity_list_item_badge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"
android:layout_marginEnd="6dp"
android:text="Due"
app:uiStrokeWidth="0dp"
style="@style/UiBadge.Warning"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/activity_list_item_date"
style="@style/activity_list_item_details"
android:layout_width="wrap_content"
android:layout_height="@dimen/ui_size_xs"
android:gravity="center|start"
android:text="Yesterday"
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/activity_list_item_status_icon"
android:layout_width="@dimen/ui_size_xs"
android:layout_height="@dimen/ui_size_xs"
android:layout_marginEnd="6dp"
android:scaleType="fitXY"
tools:ignore="ContentDescription"
app:srcCompat="@drawable/ui_purchase_protection_alt" />
<TextView
android:id="@+id/activity_list_item_status_text"
style="@style/activity_list_item_details"
android:layout_width="match_parent"
android:layout_height="18dp"
android:gravity="center|start"
android:text="Request Received"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:id="@+id/activity_list_item_notes"
style="@style/activity_list_item_details"
android:layout_width="0dp"
android:maxHeight="@dimen/ui_size_lg"
android:layout_marginTop="4dp"
android:maxLines="2"
android:text="Personal notes - My checks haven't cleared yet hope u could loan me some money say around ."
tools:ignore="HardcodedText"
app:layout_constraintTop_toBottomOf="@+id/activity_list_item_status_container"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp" />
<TextView
android:id="@+id/activity_list_item_status_desc"
style="@style/activity_list_item_details"
android:layout_width="0dp"
android:maxHeight="@dimen/ui_size_lg"
android:layout_marginTop="6dp"
android:ellipsize="end"
android:maxLines="2"
android:text="Abc notes - Waiting for your request to be accepted. Please allow us some time to do this."
tools:ignore="HardcodedText"
app:layout_constraintTop_toBottomOf="@+id/activity_list_item_notes"
app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
android:layout_marginHorizontal="16dp" />
<TextView
android:id="@+id/activity_list_item_amount"
style="@style/UiTextView.Xl.Regular"
android:layout_width="wrap_content"
android:layout_height="@dimen/ui_size_sm"
android:layout_alignParentEnd="true"
android:gravity="center|end"
android:text="9.99"
android:textColor="#737C7F"
android:textSize="18sp"
tools:ignore="HardcodedText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
这个布局看起来像这样:
当我以正常方式实现 recyclerview adpater 时,此布局看起来不错。但是,当在 recyclerview 适配器中使用 View Binding
时, 只有那些 layout_width
未设置为 0dp
的元素可见。 UI 个具有 0dp
的元素不可见 。
如果我使用 RelativeLayout
而不是 ConstarintLayout. But, I want to use
ConstraintLayout`,这个问题就会得到解决。
那么,可能是什么问题?我该如何解决这个问题?
我解决了这个问题。我从这个
替换了onCreateViewHolder()
中的代码
ActivitySummaryListTxnItemV2Binding.inflate(LayoutInflater.from(container.getContext()));
对此:
ActivitySummaryListTxnItemV2Binding.inflate(LayoutInflater.from(container.getContext()), container, false);