Android RecyclerView with CardView:卡片之间的边距



我目前正在构建我的第一个Android应用程序,我正在使用带有Material Design卡片的RecyclerView。但是,我希望卡片与屏幕边缘之间以及卡片之间具有相同的边距。根据我设置边距的方式,我会遇到不同的问题:

变式 1

<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
app:cardElevation="2dp"
app:cardUseCompatPadding="false">
...
</com.google.android.material.card.MaterialCardView>

这导致卡片之间的空间是卡片和屏幕边缘之间的空间的两倍。

变体 2

android:layout_marginTop="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="0dp"

这是我当前的实现。它修复了卡片之间更宽的空间,但代价是在列表底部没有边距。即,如果我一直滚动到底部,卡片的下边缘与屏幕的下边缘对齐。我也想在那里留出余地。

变体 3: 我尝试的第三个选项是将RecyclerView放在一个额外的布局中,并使用布局将边距设置为屏幕边缘。这有一个问题,即如果您一直滚动到列表的顶部或底部并进一步拉动,则出现的波浪形"过度滚动区域"仅出现在 RecyclerView 中,而不会延伸到屏幕边缘。所以它看起来也有点笨拙。 为了澄清起见,我在RecyclerView上使用4dp填充附上了屏幕截图

谢谢你帮我解决;)

试试这个。要应用卡片视图布局,请应用这些

android:layout_marginTop="4dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="4dp"

并回收视图添加填充

android:paddingTop="4dp"
android:paddingBottom="4dp"

只是不要同时添加两者

android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"

这将复制值

添加边距底部,就足够

android:layout_marginBottom="8dp"

最新更新