我有一个包含卡片项的RecyclerView。在早期的设备上它看起来很好,但在Lollipop设备上子卡片之间没有任何间距。我尝试使用margin和padding,但这并没有帮助解决问题。当我在Lollipop设备上使用margin时,它看起来很好,但是在早期设备上使用同样的margin时间距非常大。 再次强调:为什么会存在不同的间距?我应该使用哪个属性来解决这个问题?
我有一个包含卡片项的RecyclerView。在早期的设备上它看起来很好,但在Lollipop设备上子卡片之间没有任何间距。我尝试使用margin和padding,但这并没有帮助解决问题。当我在Lollipop设备上使用margin时,它看起来很好,但是在早期设备上使用同样的margin时间距非常大。 再次强调:为什么会存在不同的间距?我应该使用哪个属性来解决这个问题?
yigit的回答很有帮助,但没有太多细节,因此我在这里为以后查看此帖子的用户添加了一些内容。
这是我让它工作的示例(从yigit的回答中链接的android网站并不明显)。
<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>
card_view需要加下划线,并使用res-auto模式,这一点并不明显。
在Material Design培训中有一个很好的例子。
我曾经遇到了同样的问题。我不得不创建一个layout-v21文件夹,这将被lollipop设备使用,并复制布局,添加所需的边距/填充以正确地间隔它们。
这样,当你的应用在lollipop上启动时,布局将从layout-v21文件夹中读取,同时正确的空格被添加,而其他任何设备都将去你的标准布局文件,无需显式地设置空格。
希望这有所帮助。