RecyclerView 中项目之间的空间
Posted
技术标签:
【中文标题】RecyclerView 中项目之间的空间【英文标题】:Space between items in RecyclerView 【发布时间】:2021-06-28 22:09:48 【问题描述】:我有一个 RecyclerView,我通过适配器填充项目(来自另一个布局的 ImageView + TextView)。问题是两个项目之间的距离会根据文本而变化。我希望所有项目之间的空间始终相同。我怎样才能做到这一点?
这是反映问题的图片:
这里是包含我的 recyclerView 的 xml:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/categoryRecycler"
android:layout_
android:layout_
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title_category" />
这里是一个项目的xml:
<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_
android:layout_marginStart="6dp"
android:layout_>
<ImageView
android:id="@+id/categoryImage"
android:layout_
android:layout_
android:layout_marginTop="5dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_appliance" />
<TextView
android:id="@+id/categoryName"
android:layout_
android:layout_
android:layout_marginTop="2dp"
android:layout_marginEnd="3dp"
android:gravity="center"
android:maxWidth="100dp"
android:text="name category"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/categoryImage" />
</androidx.constraintlayout.widget.ConstraintLayout>
提前致谢。
【问题讨论】:
只要您添加了 100dp 作为最大宽度,为什么不将文本的宽度设置为 100dp 而不是 wrap_content 或者您可以将固定宽度设置为ConstraintLayout
当然,最好将宽度设置为 100dp
或者只是为ConsteraintLayout设置一个固定大小
【参考方案1】:
这是因为当文本的大小低于100dp
时,项目的宽度会变小
在此配置中,图像的宽度为 60dp,边距设置为 0dp,布局为 60dp 的 minWidth
当 TextView 的宽度增加超过 60dp 时,项目宽度也会增加
要解决此问题,您可以增加图像的边距,或者您可以按照 @Shay Kin 的建议直接将宽度设置为 100dp。
<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_
android:layout_marginStart="6dp"
android:layout_>
<ImageView
android:id="@+id/categoryImage"
android:layout_
android:layout_
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="5dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_appliance" />
<TextView
android:id="@+id/categoryName"
android:layout_
android:layout_
android:layout_marginTop="2dp"
android:layout_marginEnd="3dp"
android:gravity="center"
android:maxWidth="100dp"
android:text="name category"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/categoryImage" />
</androidx.constraintlayout.widget.ConstraintLayout>
【讨论】:
以上是关于RecyclerView 中项目之间的空间的主要内容,如果未能解决你的问题,请参考以下文章
即使在添加边距后,recyclerView 项目之间的空间也不显示
如何使用 AsyncTask 更新 RecyclerView 项目