为什么在棒棒糖CardViews之间没有空间?

我尝试使用CardView ,它工作在5.0以下,但看起来奇怪的棒棒糖。

在这里输入图像说明

在这里输入图像说明

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="200dp"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="card1" android:textAppearance="?android:attr/textAppearanceLarge" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="200dp"> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="card2" android:textAppearance="?android:attr/textAppearanceLarge" /> </android.support.v7.widget.CardView> </LinearLayout> 

当我使用RecyclerView时遇到同样的问题,如果在棒棒糖上运行,我是否需要添加一些东西?

CardView上设置:

 app:cardUseCompatPadding="true" 

从文档:

在API v21 +中添加填充以及与之前的版本具有相同的测量。

在cardview下面使用这两个标签:

 app:cardPreventCornerOverlap="false" app:cardUseCompatPadding="true" 

第一张图片是卡片视图的预期行为。 当卡抬高时,阴影落在底层上。 在棒棒糖装置中,通过添加填充来实现高度。 所以预棒棒糖设备将在卡片视图周围具有填充。

在L之前,CardView将填充添加到其内容,并为该区域绘制阴影。 此填充量等于顶部和底部的maxCardElevation +(1 – cos45)* cornerRadius和maxCardElevation * 1.5 +(1 – cos45)* cornerRadius。

你必须添加app:cardUseCompatPadding="true"到你的Cardview 。 但只是增加,可能会给你一个错误。 为了避免这种错误,您还必须将xmlns:app="http://schemas.android.com/apk/res-auto"到您的CardView

例如,

 <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="wrap_content" android:layout_width="match_parent" app:cardUseCompatPadding="true"> // Other views here </android.support.v7.widget.CardView> 

有些会添加card_view:cardUseCompatPadding="true"xmlns:card_view="http://schemas.android.com/apk/res-auto"而不是上面提到的那些。 两种方法都是正确的。

如果你想了解更多有关XML(Android)的应用程序 ,请通过这个答案 :

虽然以前的答案会解决这个问题,但是他们没有解释每个属性的作用。 所以要更有助于回答求职者,

cardPreventCornerOverlap属性为v20和之前的cardPreventCornerOverlap添加填充以防止Card内容和圆angular之间的交叉。

cardUseCompatPadding属性在API v21 +中添加填充以及与先前版本具有相同的测量。