Android – Why use a CardView instead of a RelativeLayout or LinearLayout

androidandroid-cardviewandroid-layoutandroid-recyclerview

I have a RecyclerView for displaying a list of items. There is this android CardView class given by android to show card layout.
If I use a RelativeLayout and set its background to white it works the same way. Also in case of CardView I have to anyway add a childlayout to it which basically contains the all the views inside the card.
So I wanted to know if their is any benefit of using a CardView (which actually increases the hierarchy of the views) rather than a normal Layout directly.

Best Answer

There are some advantages of cards over layouts, including:

  • Rounded corners, elevation, etc - visual improvements that come "out of the box" by just using cards
  • They support various lengths of the content. Actually layouts support that too, but in the context of list/grid views they are meant to have the same size, whereas cards can vary in length (for example when you show comments or descriptions)
  • Cards on the same hierarchy level can have different types of content/views, unlike layouts (list/grid items) which should have similar layouts when you show a collection

All these and other features can be found in the card's design guideline.

In short:

  • I'd use cards when I want to display a collection of items which might have different lengths/heights depending on their content (like pictures with descriptions and comments) or a high number of supplemental actions.
  • I'd use Relative/Linear layouts when I want to display a simple collection of items, all/most of which have the same layout and a limited amount (max 1,2 lines) of text, an icon and an action,etc. elements that are the same for all items