我有一些带有卡片物品的RecyclerView。在preLollipop设备上它看起来很好。但是在Lollipop上,它看起来没有儿童卡之间的间隔。我试图使用保证金和填充,但它没有帮助。当我在棒棒糖上使用保证金时,它看起来很好,但是在preLollipop上的间距相同,非常大。 再一次:为什么会有不同的间距?我应该使用哪个属性来修复它?
答案 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文件夹中读入,并添加正确的空间,任何其他设备将转到您的标准布局文件,其中不需要空间明确设定。
希望这会有所帮助。