Android架构Android

CardView属性app:cardUseCompatPaddi

2019-01-16  本文已影响64人  程序员张晴天

CardView继承自FrameLayout布局,常用属性如下:

参数 类型 含义
app:cardCornerRadius float 设置CardView的圆角半径
app:cardElevation float 设置阴影的深度
app:cardBackgroundColor int 设置卡片的背景色
android:foreground int 设置点击时候的水波纹效果,没有设置点击事件的话,就一定要设置android:clickable="true"属性,才能看到效果
app:cardUseCompatPadding boolean 在Android 5.0及以上平台中,设置是否要添加padding,5.0以下默认添加padding。默认值为false
app:cardPreventCornerOverlap boolean 是否给content添加padding,来阻止与圆角重叠,默认值为true

下文CardViewDemo代码

    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@color/colorPrimary"
        android:clickable="true"
        android:elevation="10dp"
        android:foreground="?android:attr/selectableItemBackground"
        app:cardBackgroundColor="@android:color/white"
        app:cardCornerRadius="6dp"
        app:cardElevation="10dp"
        app:cardPreventCornerOverlap="true"
        app:cardUseCompatPadding="false">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/girl2" />

    </android.support.v7.widget.CardView>

网上搜索关于app:cardUseCompatPadding和app:cardPreventCornerOverlap的解释也是看的云里雾里,所以准备自己总结,方便理解。

app:cardUseCompatPadding

在Android 5.0及以下的系统中,CardView会添加一个额外的padding来绘制阴影,但是在5.0以上的系统中是没有这个padding的,是直接绘制阴影。所以设置这个属性仅仅是对5.0以上的CardView有作用。

设置为false的时CardView不会专门去添加padding来绘制阴影(5.0以上系统)。

设置为true时,5.0以上的CardView会和5.0以下的保持一致,添加padding后绘制阴影。

文字总是不是很清晰,我们看图来区别:

cardUseCompatPadding.jpg

从图里可以看到,Android5.0以下设置属性没有改变,而在Android 7的系统上,在cardUseCompatPadding=true时,CardView的显示状态就和Android 4.4的显示状态一样了,添加了padding来绘制阴影。

app:cardPreventCornerOverlap

在5.0以下,CardView不会裁剪卡片的边界来获得圆角(根据测试情况,我的理解是不裁剪content来获得圆角),同时,CardView会给卡片内容添加一个padding,来让内容不和圆角重叠。可以设置app:cardPreventCornerOverlap属性来选择是否添加这个padding。

所以这个属性只在Android5.0以下起作用。

所以设置为true,也就是添加padding,使content不与圆角重叠。

设置为false,不添加padding,content与圆角重叠,圆角被覆盖。

也是来看图区别:

cardPreventCornerOverlap.jpg

从图里也是可以看到,右侧两张Android 7的图没有变化,而左边两张图,下方的图在将cardPreventCornerOverlap设置为true后,content被添加了padding并且不与圆角重叠,仔细看cardview白色边也是radius的设置下变成圆角。

在设置为false后,则不给content添加padding,content与圆角重叠,圆角被覆盖。

如果对你有帮助的话,点赞、评论、赞赏都是对我的鼓励,也是支持我写下去的动力,谢谢!

参考文章:

CardView | Android Developers

上一篇下一篇

猜你喜欢

热点阅读