Most visited

Recently visited

CardView

public class CardView
extends FrameLayout

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.FrameLayout
         ↳ android.support.v7.widget.CardView


带有圆角背景和阴影的FrameLayout。

CardView使用Lollipop上的 elevation属性进行阴影处理,并回退到旧版平台上的自定义仿真阴影实现。

由于圆角切割的昂贵特性,在棒棒糖之前的平台上,CardView不会裁剪与圆角相交的子项。 相反,它会添加填充以避免这种交集(请参阅setPreventCornerOverlap(boolean)以更改此行为)。

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

由于填充用于抵消阴影内容,因此无法在CardView上设置填充。 相反,您可以使用XML中的内容填充属性或代码中的setContentPadding(int, int, int, int)来设置CardView边缘和CardView子级之间的填充。

请注意,如果您为CardView指定了精确的尺寸,由于阴影,其在Lollipop和Lollipop之后的平台之间的内容区域将会不同。 通过使用特定于版本的资源值,您可以避免这些更改。 或者,如果您希望CardView在平台上添加内部填充棒棒糖,那么您可以致电setUseCompatPadding(boolean)并传递true

要以向下兼容的方式更改CardView的高程,请使用setCardElevation(float) CardView将在棒棒糖上使用高程API,在棒棒糖之前,它将改变阴影大小。 为避免阴影大小变化时移动视图,阴影大小被getMaxCardElevation() 如果要动态更改高程,则应在CardView初始化时调用setMaxCardElevation(float)

Summary

XML attributes

android.support.v7.cardview:cardBackgroundColor Background color for CardView. 
android.support.v7.cardview:cardCornerRadius Corner radius for CardView. 
android.support.v7.cardview:cardElevation Elevation for CardView. 
android.support.v7.cardview:cardMaxElevation Maximum Elevation for CardView. 
android.support.v7.cardview:cardPreventCornerOverlap Add padding to CardView on v20 and before to prevent intersections between the Card content and rounded corners. 
android.support.v7.cardview:cardUseCompatPadding Add padding in API v21+ as well to have the same measurements with previous versions. 
android.support.v7.cardview:contentPadding Inner padding between the edges of the Card and children of the CardView. 
android.support.v7.cardview:contentPaddingBottom Inner padding between the bottom edge of the Card and children of the CardView. 
android.support.v7.cardview:contentPaddingLeft Inner padding between the left edge of the Card and children of the CardView. 
android.support.v7.cardview:contentPaddingRight Inner padding between the right edge of the Card and children of the CardView. 
android.support.v7.cardview:contentPaddingTop Inner padding between the top edge of the Card and children of the CardView. 

Inherited XML attributes

From class android.widget.FrameLayout
From class android.view.ViewGroup
From class android.view.View

Inherited constants

From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

CardView(Context context)
CardView(Context context, AttributeSet attrs)
CardView(Context context, AttributeSet attrs, int defStyleAttr)

Public methods

ColorStateList getCardBackgroundColor()

返回CardView的背景颜色状态列表。

float getCardElevation()

返回CardView的向后兼容高程。

int getContentPaddingBottom()

返回卡片底部边缘之前的内部填充

int getContentPaddingLeft()

返回卡片左边后的内部填充

int getContentPaddingRight()

返回卡片右边缘之前的内部填充

int getContentPaddingTop()

返回卡片顶部边缘后的内部填充

float getMaxCardElevation()

返回CardView的向后兼容最大高程。

boolean getPreventCornerOverlap()

返回CardView是否应向内容添加额外填充以避免与Lollipop前的平台上的圆角重叠。

float getRadius()

返回CardView的角半径。

boolean getUseCompatPadding()

返回CardView是否会在平台Lollipop和之后添加内部填充。

void setCardBackgroundColor(int color)

更新CardView的背景颜色

void setCardBackgroundColor(ColorStateList color)

更新CardView的背景ColorStateList

void setCardElevation(float elevation)

更新CardView的向后兼容高程。

void setContentPadding(int left, int top, int right, int bottom)

设置CardView边缘和CardView子项之间的填充。

void setMaxCardElevation(float maxElevation)

更新CardView的向后兼容最大高程。

void setMinimumHeight(int minHeight)

设置视图的最小高度。

void setMinimumWidth(int minWidth)

设置视图的最小宽度。

void setPadding(int left, int top, int right, int bottom)

设置填充。

void setPaddingRelative(int start, int top, int end, int bottom)

设置相对填充。

void setPreventCornerOverlap(boolean preventCornerOverlap)

在预棒棒糖平台上,CardView不会裁剪卡的边界以获得圆角。

void setRadius(float radius)

更新CardView的圆角半径。

void setUseCompatPadding(boolean useCompatPadding)

CardView添加额外的填充以在棒棒糖之前的平台上绘制阴影。

Protected methods

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。

Inherited methods

From class android.widget.FrameLayout
From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.view.ViewParent
From interface android.view.ViewManager
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource

XML attributes

android.support.v7.cardview:cardBackgroundColor

CardView的背景颜色。

可能是一个颜色值,形式为“ #rgb ”,“ #argb ”,“ #rrggbb#aarrggbb ”。

相关方法:

android.support.v7.cardview:cardCornerRadius

CardView的拐角半径。

可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

android.support.v7.cardview:cardElevation

CardView的高程。

可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

android.support.v7.cardview:cardMaxElevation

CardView的最大高程。

可能是一个维度值,它是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

android.support.v7.cardview:cardPreventCornerOverlap

在v20和之前添加填充到CardView以防止卡片内容和圆角之间的交叉。

可能是一个布尔值,如“ true ”或“ false ”。

相关方法:

android.support.v7.cardview:cardUseCompatPadding

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

可能是布尔值,如“ true ”或“ false ”。

相关方法:

android.support.v7.cardview:contentPadding

卡片边缘和CardView子项之间的内部填充。

可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

android.support.v7.cardview:contentPaddingBottom

卡片底部边缘和CardView儿童之间的内部填充。

可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

android.support.v7.cardview:contentPaddingLeft

卡的左边缘和CardView的孩子之间的内部填充。

可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

android.support.v7.cardview:contentPaddingRight

卡片右边缘和CardView儿童之间的内部填充。

可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

android.support.v7.cardview:contentPaddingTop

卡片顶部边缘和CardView儿童之间的内部填充。

可能是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

相关方法:

Public constructors

CardView

CardView (Context context)

Parameters
context Context

CardView

CardView (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

CardView

CardView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context
attrs AttributeSet
defStyleAttr int

Public methods

getCardBackgroundColor

ColorStateList getCardBackgroundColor ()

返回CardView的背景颜色状态列表。

Returns
ColorStateList The background color state list of the CardView.

getCardElevation

float getCardElevation ()

返回CardView的向后兼容高程。

Returns
float Elevation of the CardView

也可以看看:

getContentPaddingBottom

int getContentPaddingBottom ()

返回卡片底部边缘之前的内部填充

Returns
int the inner padding before the Card's bottom edge

getContentPaddingLeft

int getContentPaddingLeft ()

返回卡片左边后的内部填充

Returns
int the inner padding after the Card's left edge

getContentPaddingRight

int getContentPaddingRight ()

返回卡片右边缘之前的内部填充

Returns
int the inner padding before the Card's right edge

getContentPaddingTop

int getContentPaddingTop ()

返回卡片顶部边缘后的内部填充

Returns
int the inner padding after the Card's top edge

getMaxCardElevation

float getMaxCardElevation ()

返回CardView的向后兼容最大高程。

Returns
float Maximum elevation of the CardView

也可以看看:

getPreventCornerOverlap

boolean getPreventCornerOverlap ()

返回CardView是否应向内容添加额外填充以避免与Lollipop前的平台上的圆角重叠。

Returns
boolean True if CardView prevents overlaps with rounded corners on platforms before Lollipop. Default value is true.

getRadius

float getRadius ()

返回CardView的角半径。

Returns
float Corner radius of the CardView

也可以看看:

getUseCompatPadding

boolean getUseCompatPadding ()

返回CardView是否会在平台Lollipop和之后添加内部填充。

Returns
boolean true if CardView adds inner padding on platforms Lollipop and after to have same dimensions with platforms before Lollipop.

setCardBackgroundColor

void setCardBackgroundColor (int color)

更新CardView的背景颜色

相关XML属性:

Parameters
color int: The new color to set for the card background

setCardBackgroundColor

void setCardBackgroundColor (ColorStateList color)

更新CardView的背景ColorStateList

相关XML属性:

Parameters
color ColorStateList: The new ColorStateList to set for the card background

setCardElevation

void setCardElevation (float elevation)

更新CardView的向后兼容高程。

相关XML属性:

Parameters
elevation float: The backward compatible elevation in pixels.

也可以看看:

setContentPadding

void setContentPadding (int left, 
                int top, 
                int right, 
                int bottom)

设置CardView边缘和CardView子项之间的填充。

根据平台版本或 getUseCompatPadding()设置,CardView可能会在致电 setPadding(int, int, int, int)之前更新这些值。

相关XML属性:

Parameters
left int: The left padding in pixels
top int: The top padding in pixels
right int: The right padding in pixels
bottom int: The bottom padding in pixels

setMaxCardElevation

void setMaxCardElevation (float maxElevation)

更新CardView的向后兼容最大高程。

如果设备的操作系统版本为棒棒糖或更新,并且 getUseCompatPadding()false则调用此方法 false

相关XML属性:

Parameters
maxElevation float: The backward compatible maximum elevation in pixels.

也可以看看:

setMinimumHeight

void setMinimumHeight (int minHeight)

设置视图的最小高度。 不能保证视图能够达到这个最小高度(例如,如果它的父布局用较少的可用高度限制它)。

Parameters
minHeight int: The minimum height the view will try to be.

setMinimumWidth

void setMinimumWidth (int minWidth)

设置视图的最小宽度。 不能保证视图能够达到这个最小宽度(例如,如果它的父布局用较小的可用宽度限制它)。

Parameters
minWidth int: The minimum width the view will try to be.

setPadding

void setPadding (int left, 
                int top, 
                int right, 
                int bottom)

设置填充。 该视图可能会添加显示滚动条所需的空间,具体取决于滚动条的样式和可见性。 因此,从数值返回getPaddingLeft()getPaddingTop()getPaddingRight()getPaddingBottom()可能与此调用设置的值不同。

Parameters
left int: the left padding in pixels
top int: the top padding in pixels
right int: the right padding in pixels
bottom int: the bottom padding in pixels

setPaddingRelative

void setPaddingRelative (int start, 
                int top, 
                int end, 
                int bottom)

设置相对填充。 该视图可能会添加显示滚动条所需的空间,具体取决于滚动条的样式和可见性。 因此,从数值返回getPaddingStart()getPaddingTop()getPaddingEnd()getPaddingBottom()可能与此调用设置的值不同。

Parameters
start int: the start padding in pixels
top int: the top padding in pixels
end int: the end padding in pixels
bottom int: the bottom padding in pixels

setPreventCornerOverlap

void setPreventCornerOverlap (boolean preventCornerOverlap)

在预棒棒糖平台上,CardView不会裁剪卡的边界以获得圆角。 相反,它将填充添加到内容,以便它不会与圆角重叠。 您可以通过将此字段设置为false来禁用此行为。

除非已启用兼容性填充,否则在棒棒糖和以上设置此值不会产生任何影响。

相关XML属性:

Parameters
preventCornerOverlap boolean: Whether CardView should add extra padding to content to avoid overlaps with the CardView corners.

也可以看看:

setRadius

void setRadius (float radius)

更新CardView的圆角半径。

相关XML属性:

Parameters
radius float: The radius in pixels of the corners of the rectangle shape

也可以看看:

setUseCompatPadding

void setUseCompatPadding (boolean useCompatPadding)

CardView添加额外的填充以在棒棒糖之前的平台上绘制阴影。

这可能会导致卡片在棒棒糖和棒棒糖之间有不同的尺寸。 如果您需要将CardView与其他视图对齐,则可能需要api特定于版本的维度资源来说明更改。 或者,您可以将此标志设置为true并且CardView将在平台棒棒糖和之后的平台上添加相同的填充值。

由于将此标志设置为true会在UI中增加不必要的间隙,默认值为 false

相关XML属性:

Parameters
useCompatPadding boolean: true> if CardView should add padding for the shadows on platforms Lollipop and above.

Protected methods

onMeasure

void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)调用, measure(int, int)子类覆盖以提供其内容的准确和有效的度量。

合同:覆盖此方法时,您必须致电setMeasuredDimension(int, int)来存储此视图的测量宽度和高度。 如果不这样做,将触发IllegalStateException ,由measure(int, int)引发。 调用超类' onMeasure(int, int)是一种有效的用法。

Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)以提供更好的内容度量。

如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()getSuggestedMinimumWidth() )。

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

Hooray!