Skip to content

Most visited

Recently visited

navigation
added in version 25.1.0
belongs to Maven artifact com.android.support:cardview-v7:27.0.0

CardView

public class CardView
extends FrameLayout

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


A FrameLayout with a rounded corner background and shadow.

CardView uses elevation property on Lollipop for shadows and falls back to a custom emulated shadow implementation on older platforms.

Due to expensive nature of rounded corner clipping, on platforms before Lollipop, CardView does not clip its children that intersect with rounded corners. Instead, it adds padding to avoid such intersection (See setPreventCornerOverlap(boolean) to change this behavior).

Before Lollipop, CardView adds padding to its content and draws shadows to that area. This padding amount is equal to maxCardElevation + (1 - cos45) * cornerRadius on the sides and maxCardElevation * 1.5 + (1 - cos45) * cornerRadius on top and bottom.

Since padding is used to offset content for shadows, you cannot set padding on CardView. Instead, you can use content padding attributes in XML or setContentPadding(int, int, int, int) in code to set the padding between the edges of the CardView and children of CardView.

Note that, if you specify exact dimensions for the CardView, because of the shadows, its content area will be different between platforms before Lollipop and after Lollipop. By using api version specific resource values, you can avoid these changes. Alternatively, If you want CardView to add inner padding on platforms Lollipop and after as well, you can call setUseCompatPadding(boolean) and pass true.

To change CardView's elevation in a backward compatible way, use setCardElevation(float). CardView will use elevation API on Lollipop and before Lollipop, it will change the shadow size. To avoid moving the View while shadow size is changing, shadow size is clamped by getMaxCardElevation(). If you want to change elevation dynamically, you should call setMaxCardElevation(float) when CardView is initialized.

Summary

XML attributes

CardView_cardBackgroundColor  
CardView_cardCornerRadius  
CardView_cardElevation  
CardView_cardMaxElevation  
CardView_cardPreventCornerOverlap  
CardView_cardUseCompatPadding  
CardView_contentPadding  
CardView_contentPaddingBottom  
CardView_contentPaddingLeft  
CardView_contentPaddingRight  
CardView_contentPaddingTop  

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()

Returns the background color state list of the CardView.

float getCardElevation()

Returns the backward compatible elevation of the CardView.

int getContentPaddingBottom()

Returns the inner padding before the Card's bottom edge

int getContentPaddingLeft()

Returns the inner padding after the Card's left edge

int getContentPaddingRight()

Returns the inner padding before the Card's right edge

int getContentPaddingTop()

Returns the inner padding after the Card's top edge

float getMaxCardElevation()

Returns the backward compatible maximum elevation of the CardView.

boolean getPreventCornerOverlap()

Returns whether CardView should add extra padding to content to avoid overlaps with rounded corners on pre-Lollipop platforms.

float getRadius()

Returns the corner radius of the CardView.

boolean getUseCompatPadding()

Returns whether CardView will add inner padding on platforms Lollipop and after.

void setCardBackgroundColor(int color)

Updates the background color of the CardView

void setCardBackgroundColor(ColorStateList color)

Updates the background ColorStateList of the CardView

void setCardElevation(float elevation)

Updates the backward compatible elevation of the CardView.

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

Sets the padding between the Card's edges and the children of CardView.

void setMaxCardElevation(float maxElevation)

Updates the backward compatible maximum elevation of the 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)

On pre-Lollipop platforms, CardView does not clip the bounds of the Card for the rounded corners.

void setRadius(float radius)

Updates the corner radius of the CardView.

void setUseCompatPadding(boolean useCompatPadding)

CardView adds additional padding to draw shadows on platforms before Lollipop.

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

CardView_cardBackgroundColor

Related methods:

CardView_cardCornerRadius

Related methods:

CardView_cardElevation

Related methods:

CardView_cardMaxElevation

Related methods:

CardView_cardPreventCornerOverlap

Related methods:

CardView_cardUseCompatPadding

Related methods:

CardView_contentPadding

Related methods:

CardView_contentPaddingBottom

Related methods:

CardView_contentPaddingLeft

Related methods:

CardView_contentPaddingRight

Related methods:

CardView_contentPaddingTop

Related methods:

Public constructors

CardView

added in version 25.1.0
CardView (Context context)

Parameters
context Context

CardView

added in version 25.1.0
CardView (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

CardView

added in version 25.1.0
CardView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

Public methods

getCardBackgroundColor

added in version 25.1.0
ColorStateList getCardBackgroundColor ()

Returns the background color state list of the CardView.

Returns
ColorStateList The background color state list of the CardView.

getCardElevation

added in version 25.1.0
float getCardElevation ()

Returns the backward compatible elevation of the CardView.

Returns
float Elevation of the CardView

See also:

getContentPaddingBottom

added in version 25.1.0
int getContentPaddingBottom ()

Returns the inner padding before the Card's bottom edge

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

getContentPaddingLeft

added in version 25.1.0
int getContentPaddingLeft ()

Returns the inner padding after the Card's left edge

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

getContentPaddingRight

added in version 25.1.0
int getContentPaddingRight ()

Returns the inner padding before the Card's right edge

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

getContentPaddingTop

added in version 25.1.0
int getContentPaddingTop ()

Returns the inner padding after the Card's top edge

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

getMaxCardElevation

added in version 25.1.0
float getMaxCardElevation ()

Returns the backward compatible maximum elevation of the CardView.

Returns
float Maximum elevation of the CardView

See also:

getPreventCornerOverlap

added in version 25.1.0
boolean getPreventCornerOverlap ()

Returns whether CardView should add extra padding to content to avoid overlaps with rounded corners on pre-Lollipop platforms.

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

getRadius

added in version 25.1.0
float getRadius ()

Returns the corner radius of the CardView.

Returns
float Corner radius of the CardView

See also:

getUseCompatPadding

added in version 25.1.0
boolean getUseCompatPadding ()

Returns whether CardView will add inner padding on platforms Lollipop and after.

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

setCardBackgroundColor

added in version 25.1.0
void setCardBackgroundColor (int color)

Updates the background color of the CardView

Related XML Attributes:

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

setCardBackgroundColor

added in version 25.1.0
void setCardBackgroundColor (ColorStateList color)

Updates the background ColorStateList of the CardView

Related XML Attributes:

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

setCardElevation

added in version 25.1.0
void setCardElevation (float elevation)

Updates the backward compatible elevation of the CardView.

Related XML Attributes:

Parameters
elevation float: The backward compatible elevation in pixels.

See also:

setContentPadding

added in version 25.1.0
void setContentPadding (int left, 
                int top, 
                int right, 
                int bottom)

Sets the padding between the Card's edges and the children of CardView.

Depending on platform version or getUseCompatPadding() settings, CardView may update these values before calling setPadding(int, int, int, int).

Related XML Attributes:

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

added in version 25.1.0
void setMaxCardElevation (float maxElevation)

Updates the backward compatible maximum elevation of the CardView.

Calling this method has no effect if device OS version is Lollipop or newer and getUseCompatPadding() is false.

Related XML Attributes:

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

See also:

setMinimumHeight

void setMinimumHeight (int minHeight)

Parameters
minHeight int

setMinimumWidth

void setMinimumWidth (int minWidth)

Parameters
minWidth int

setPadding

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

Parameters
left int

top int

right int

bottom int

setPaddingRelative

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

Parameters
start int

top int

end int

bottom int

setPreventCornerOverlap

added in version 25.1.0
void setPreventCornerOverlap (boolean preventCornerOverlap)

On pre-Lollipop platforms, CardView does not clip the bounds of the Card for the rounded corners. Instead, it adds padding to content so that it won't overlap with the rounded corners. You can disable this behavior by setting this field to false.

Setting this value on Lollipop and above does not have any effect unless you have enabled compatibility padding.

Related XML Attributes:

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

See also:

setRadius

added in version 25.1.0
void setRadius (float radius)

Updates the corner radius of the CardView.

Related XML Attributes:

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

See also:

setUseCompatPadding

added in version 25.1.0
void setUseCompatPadding (boolean useCompatPadding)

CardView adds additional padding to draw shadows on platforms before Lollipop.

This may cause Cards to have different sizes between Lollipop and before Lollipop. If you need to align CardView with other Views, you may need api version specific dimension resources to account for the changes. As an alternative, you can set this flag to true and CardView will add the same padding values on platforms Lollipop and after.

Since setting this flag to true adds unnecessary gaps in the UI, default value is false.

Related XML Attributes:

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)

Parameters
widthMeasureSpec int

heightMeasureSpec int

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)