使用RecyclerView和卡

时间:2014-11-12 16:55:37

标签: android android-5.0-lollipop android-recyclerview

我有一些带有卡片物品的RecyclerView。在preLollipop设备上它看起来很好。但是在Lollipop上,它看起来没有儿童卡之间的间隔。我试图使用保证金和填充,但它没有帮助。当我在棒棒糖上使用保证金时,它看起来很好,但是在preLollipop上的间距相同,非常大。 再一次:为什么会有不同的间距?我应该使用哪个属性来修复它?

3 个答案:

答案 0 :(得分:22)

这种情况正在发生,因为在L上,阴影位于View界限之外,但是在L之前,它们位于View内部(遗憾的是L-L之前没有真正的阴影支持)。

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

答案 1 :(得分:15)

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_height="wrap_content"
    android:layout_width="match_parent"
    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中有一个很好的例子。

答案 2 :(得分:1)

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

这样当您的应用程序在棒棒糖上启动时,布局将从layout-v21文件夹中读入,并添加正确的空间,任何其他设备将转到您的标准布局文件,其中不需要空间明确设定。

希望这会有所帮助。