使用带有卡片的 RecyclerView

Posted

技术标签:

【中文标题】使用带有卡片的 RecyclerView【英文标题】:Using RecyclerView with Card 【发布时间】:2015-01-09 14:51:57 【问题描述】:

我有一些带有卡片项目的 RecyclerView。在 preLollipop 设备上看起来不错。但在 Lollipop 上,它看起来在子卡之间没有任何间距。我尝试使用边距和填充,但没有帮助。当我在棒棒糖上使用边距时,它看起来很好,但是在 preLollipop 间距上具有相同的边距时非常大。 再一次:为什么会有不同的间距?我应该使用哪个属性来修复它?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。我必须创建一个 layout-v21 文件夹,棒棒糖设备将使用该文件夹,并复制布局,添加我需要正确间隔的边距/填充。

这样,当您的应用在 lollipop 上启动时,布局将从 layout-v21 文件夹中读取并添加正确的空间,并且任何其他设备将转到您不需要空间的标准布局文件显式设置。

希望这会有所帮助。

【讨论】:

【参考方案2】:

发生这种情况是因为在 L 上,阴影在 View 边界之外,但 pre-L,它们在 View 内(不幸的是,没有真正的阴影支持 pre-L)。

如果您希望 CardView 在 L 上也具有相同的间距,请将 cardUseCompatPadding 设置为 true。

【讨论】:

【参考方案3】:

yigit 的回答很有帮助,但没有太多细节,所以我在这里为这篇文章的未来观众添加一些内容。

这是我如何实现此功能的示例(在 yigit 的答案中链接 android site 并不明显)。

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_
    android:layout_marginLeft="@dimen/activity_vertical_margin"
    android:layout_marginRight="@dimen/activity_vertical_margin"
    android:layout_marginTop="2dip"
    android:layout_marginBottom="2dip"
    card_view:cardUseCompatPadding="true">

    // Other layouts and views here

</android.support.v7.widget.CardView>

需要下划线和使用 res-auto 模式的 card_view 并不明显。

Material Design Training 中有一个很好的例子。

【讨论】:

您的 CardView 中缺少结束标记。我想修复它,但我需要编辑至少 6 个字符 :((我想不出其他任何改变)-如果你能纠正它会很棒 :) Jepp 看起来不错,感谢您的详细回答 :) !尽管我不得不删除该 card_view:cardUseCompatPadding - 因为它没有得到正确解决。不确定那是因为当时图书馆不见了,但如果它真的不起作用,我会回复你的。虽然我认为它与另一个问题有关,如果你测试它,我猜应该没问题。

以上是关于使用带有卡片的 RecyclerView的主要内容,如果未能解决你的问题,请参考以下文章

如何制作带有箭头的溢出水平卡片? (使用引导 4.5)

如何创建带有角材料的卡片网格?

带有卡片堆栈的 Android 垂直视图寻呼机

如何使用 int 数组创建带有面孔和西装的卡片组?

Flutter:需要帮助来实现带有图像的卡片

带有分页的 Vuetify 卡片