我正在多个设备上测试我的应用程序,并注意到使用CardView,某些设备在每个CardView之间呈现间距。
我正在尝试隔离问题,看起来API 23不包含任何间距,而API< 23呈现某种填充/间距。
请注意,我已经尝试了提议的解决方案here,但它无效。它在XML中提出了以下内容:
app:cardUseCompatPadding="true"
API 23
API< 23
答案 0 :(得分:2)
问题在于,在api-21及更高版本上支持CardViews,而在KitKat及更早版本中,它们是伪造的#34;由支持库。
我过去成功完成的工作是使用单独的布局文件,只需手动像素推送它们直到它看起来正确。
例如,在res/layout
中,你有这个xml:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/my_card"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="0dip"
android:layout_marginLeft="0dip"
android:layout_marginTop="1dip"
android:layout_marginBottom="1dip"
cardview:cardBackgroundColor="@color/even_light_gray"
android:foreground="@drawable/card_foreground"
cardview:cardCornerRadius="1dp" >
<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="8dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:paddingTop="4dp" >
<!-- .......... -->
</LinearLayout>
</android.support.v7.widget.CardView>
然后,在res/layout-21
中,您的此布局具有不同的边距和填充值:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/my_card"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="1dip"
android:layout_marginLeft="1dip"
android:layout_marginTop="4dip"
android:layout_marginBottom="4dip"
cardview:cardBackgroundColor="@color/even_light_gray"
android:foreground="@drawable/card_foreground"
cardview:cardCornerRadius="1dp" >
<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="8dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:paddingTop="4dp" >
<!-- .......... -->
</LinearLayout>
</android.support.v7.widget.CardView>
答案 1 :(得分:2)
我发现这个......
在cardview attr中使用它,
app:cardPreventCornerOverlap="false"
并在不同的android os版本中使用它
app:cardMaxElevation="0dp"
app:cardElevation="0dp"
在pre-L中,使它们为0dp,在api21或之后,使它们为非零