Most visited

Recently visited

ImageCardView

public class ImageCardView
extends BaseCardView

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.FrameLayout
         ↳ android.support.v17.leanback.widget.BaseCardView
           ↳ android.support.v17.leanback.widget.ImageCardView


A subclass of BaseCardView with an ImageView as its main region. The ImageCardView is highly customizable and can be used for various use-cases by adjusting the ImageViewCard's type to any combination of Title, Content, Badge or ImageOnly.

Styling

There are two different ways to style the ImageCardView.
No matter what way you use, all your styles applied to an ImageCardView have to extend the style Widget_Leanback_ImageCardViewStyle.

Example:

 <style name="CustomImageCardViewStyle" parent="Widget.Leanback.ImageCardViewStyle">
        <item name="cardBackground">#F0F</item>
        <item name="lbImageCardViewType">Title|Content</item>
   </style>
   <style name="CustomImageCardTheme" parent="Theme.Leanback">
        <item name="imageCardViewStyle">@style/CustomImageCardViewStyle</item>
        <item name="imageCardViewInfoAreaStyle">@style/ImageCardViewColoredInfoArea</item>
        <item name="imageCardViewTitleStyle">@style/ImageCardViewColoredTitle</item>
    </style>
 

The first possibility is to set custom Styles in the Leanback Theme's attributes imageCardViewStyle, imageCardViewTitleStyle etc. The styles set here, is the default style for all ImageCardViews.

The second possibility allows you to style a particular ImageCardView. This is useful if you want to create multiple types of cards. E.g. you might want to display a card with only a title and another one with title and content. Thus you need to define two different ImageCardViewStyles and two different themes and apply them to the ImageCardViews. You can do this by using a the ImageCardView(Context) constructor and passing a ContextThemeWrapper with the custom ImageCardView theme id.

Example (using constructor):

 new ImageCardView(new ContextThemeWrapper(context, R.style.CustomImageCardTheme));
 
 

You can style all ImageCardView's components such as the title, content, badge, infoArea and the image itself by extending the corresponding style and overriding the specific attribute in your custom ImageCardView theme.

Components

The ImageCardView contains three components which can be combined in any combination: In order to choose the components you want to use in your ImageCardView, you have to specify them in the lbImageCardViewType attribute of your custom ImageCardViewStyle. You can combine the following values: Title, Content, IconOnRight, IconOnLeft, ImageOnly.

Examples:

 <style name="CustomImageCardViewStyle" parent="Widget.Leanback.ImageCardViewStyle">
        ...
        <item name="lbImageCardViewType">Title|Content|IconOnLeft</item>
        ...
    </style>
 
 <style name="CustomImageCardViewStyle" parent="Widget.Leanback.ImageCardViewStyle">
        ...
        <item name="lbImageCardViewType">ImageOnly</item>
        ...
    </style>
 

Summary

XML attributes

android.support.v17.leanback:imageCardViewBadgeStyle  
android.support.v17.leanback:imageCardViewContentStyle  
android.support.v17.leanback:imageCardViewImageStyle  
android.support.v17.leanback:imageCardViewInfoAreaStyle  
android.support.v17.leanback:imageCardViewStyle  
android.support.v17.leanback:imageCardViewTitleStyle  
android.support.v17.leanback:lbImageCardViewType Defines what components the ImageCardView will use. 

Inherited XML attributes

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

Constants

int CARD_TYPE_FLAG_CONTENT

int CARD_TYPE_FLAG_ICON_LEFT

int CARD_TYPE_FLAG_ICON_RIGHT

int CARD_TYPE_FLAG_IMAGE_ONLY

int CARD_TYPE_FLAG_TITLE

Inherited constants

From class android.support.v17.leanback.widget.BaseCardView
From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

ImageCardView(Context context, int themeResId)

This constructor is deprecated. Calling this constructor inefficiently creates one ContextThemeWrapper per card, you should share it in card Presenter: wrapper = new ContextThemeWrapper(context, themResId); return new ImageCardView(wrapper);

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

Public methods

Drawable getBadgeImage()

Returns the badge image drawable.

CharSequence getContentText()

Returns the content text.

Drawable getInfoAreaBackground()

Returns the info area background drawable.

Drawable getMainImage()

Returns the ImageView drawable.

final ImageView getMainImageView()

Returns the main image view.

CharSequence getTitleText()

Returns the title text.

boolean hasOverlappingRendering()

Returns whether this View has content which overlaps.

void setBadgeImage(Drawable drawable)

Sets the badge image drawable.

void setContentText(CharSequence text)

Sets the content text.

void setInfoAreaBackground(Drawable drawable)

Sets the info area background drawable.

void setInfoAreaBackgroundColor(int color)

Sets the info area background color.

void setMainImage(Drawable drawable, boolean fade)

Sets the image drawable with optional fade-in animation.

void setMainImage(Drawable drawable)

Sets the image drawable with fade-in animation.

void setMainImageAdjustViewBounds(boolean adjustViewBounds)

Enables or disables adjustment of view bounds on the main image.

void setMainImageDimensions(int width, int height)

Sets the layout dimensions of the ImageView.

void setMainImageScaleType(ImageView.ScaleType scaleType)

Sets the ScaleType of the main image.

void setTitleText(CharSequence text)

Sets the title text.

Protected methods

void onAttachedToWindow()

This is called when the view is attached to a window.

void onDetachedFromWindow()

This is called when the view is detached from a window.

Inherited methods

From class android.support.v17.leanback.widget.BaseCardView
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.v17.leanback:imageCardViewBadgeStyle

android.support.v17.leanback:imageCardViewContentStyle

android.support.v17.leanback:imageCardViewImageStyle

android.support.v17.leanback:imageCardViewInfoAreaStyle

android.support.v17.leanback:imageCardViewStyle

android.support.v17.leanback:imageCardViewTitleStyle

android.support.v17.leanback:lbImageCardViewType

Defines what components the ImageCardView will use.

Must be one or more (separated by '|') of the following constant values.

ConstantValueDescription
Content2
IconOnLeft8
IconOnRight4
ImageOnly0Only display the main image.
Title1

Constants

CARD_TYPE_FLAG_CONTENT

int CARD_TYPE_FLAG_CONTENT

Constant Value: 2 (0x00000002)

CARD_TYPE_FLAG_ICON_LEFT

int CARD_TYPE_FLAG_ICON_LEFT

Constant Value: 8 (0x00000008)

CARD_TYPE_FLAG_ICON_RIGHT

int CARD_TYPE_FLAG_ICON_RIGHT

Constant Value: 4 (0x00000004)

CARD_TYPE_FLAG_IMAGE_ONLY

int CARD_TYPE_FLAG_IMAGE_ONLY

Constant Value: 0 (0x00000000)

CARD_TYPE_FLAG_TITLE

int CARD_TYPE_FLAG_TITLE

Constant Value: 1 (0x00000001)

Public constructors

ImageCardView

ImageCardView (Context context, 
                int themeResId)

This constructor is deprecated.
Calling this constructor inefficiently creates one ContextThemeWrapper per card, you should share it in card Presenter: wrapper = new ContextThemeWrapper(context, themResId); return new ImageCardView(wrapper);

Create an ImageCardView using a given theme for customization.

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.
themeResId int: The resourceId of the theme you want to apply to the ImageCardView. The theme includes attributes "imageCardViewStyle", "imageCardViewTitleStyle", "imageCardViewContentStyle" etc. to customize individual part of ImageCardView.

ImageCardView

ImageCardView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context
attrs AttributeSet
defStyleAttr int

See also:

ImageCardView

ImageCardView (Context context)

Parameters
context Context

See also:

ImageCardView

ImageCardView (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

See also:

Public methods

getBadgeImage

Drawable getBadgeImage ()

Returns the badge image drawable.

Returns
Drawable

getContentText

CharSequence getContentText ()

Returns the content text.

Returns
CharSequence

getInfoAreaBackground

Drawable getInfoAreaBackground ()

Returns the info area background drawable.

Returns
Drawable

getMainImage

Drawable getMainImage ()

Returns the ImageView drawable.

Returns
Drawable

getMainImageView

ImageView getMainImageView ()

Returns the main image view.

Returns
ImageView

getTitleText

CharSequence getTitleText ()

Returns the title text.

Returns
CharSequence

hasOverlappingRendering

boolean hasOverlappingRendering ()

Returns whether this View has content which overlaps.

This function, intended to be overridden by specific View types, is an optimization when alpha is set on a view. If rendering overlaps in a view with alpha < 1, that view is drawn to an offscreen buffer and then composited into place, which can be expensive. If the view has no overlapping rendering, the view can draw each primitive with the appropriate alpha value directly. An example of overlapping rendering is a TextView with a background image, such as a Button. An example of non-overlapping rendering is a TextView with no background, or an ImageView with only the foreground image. The default implementation returns true; subclasses should override if they have cases which can be optimized.

The current implementation of the saveLayer and saveLayerAlpha methods in Canvas necessitates that a View return true if it uses the methods internally without passing the CLIP_TO_LAYER_SAVE_FLAG.

Note: The return value of this method is ignored if forceHasOverlappingRendering(boolean) has been called on this view.

Returns
boolean true if the content in this view might overlap, false otherwise.

setBadgeImage

void setBadgeImage (Drawable drawable)

Sets the badge image drawable.

Parameters
drawable Drawable

setContentText

void setContentText (CharSequence text)

Sets the content text.

Parameters
text CharSequence

setInfoAreaBackground

void setInfoAreaBackground (Drawable drawable)

Sets the info area background drawable.

Parameters
drawable Drawable

setInfoAreaBackgroundColor

void setInfoAreaBackgroundColor (int color)

Sets the info area background color.

Parameters
color int

setMainImage

void setMainImage (Drawable drawable, 
                boolean fade)

Sets the image drawable with optional fade-in animation.

Parameters
drawable Drawable
fade boolean

setMainImage

void setMainImage (Drawable drawable)

Sets the image drawable with fade-in animation.

Parameters
drawable Drawable

setMainImageAdjustViewBounds

void setMainImageAdjustViewBounds (boolean adjustViewBounds)

Enables or disables adjustment of view bounds on the main image.

Parameters
adjustViewBounds boolean

setMainImageDimensions

void setMainImageDimensions (int width, 
                int height)

Sets the layout dimensions of the ImageView.

Parameters
width int
height int

setMainImageScaleType

void setMainImageScaleType (ImageView.ScaleType scaleType)

Sets the ScaleType of the main image.

Parameters
scaleType ImageView.ScaleType

setTitleText

void setTitleText (CharSequence text)

Sets the title text.

Parameters
text CharSequence

Protected methods

onAttachedToWindow

void onAttachedToWindow ()

This is called when the view is attached to a window. At this point it has a Surface and will start drawing. Note that this function is guaranteed to be called before onDraw(android.graphics.Canvas), however it may be called any time before the first onDraw -- including before or after onMeasure(int, int).

onDetachedFromWindow

void onDetachedFromWindow ()

This is called when the view is detached from a window. At this point it no longer has a surface for drawing.

Hooray!