What's the difference between the CardView from com.google.android.material and android.support.v7.widget

There are 3 versions:

  • android.support.v7.widget.CardView: it is provided by the old support libraries and it is deprecated.

  • androidx.cardview.widget.CardView it is the androidx version and it replaced the support libraries.
    To use it you have to add the dependency implementation 'androidx.cardview:cardview:x.x.x'.

  • com.google.android.material.card.MaterialCardView is provided by the Material Components Library. To use it you have to add the dependency implementation 'com.google.android.material:material:1.1.0'.

The MaterialCardView extends the androidx.cardview.widget.CardView and introduces some changes as the use of a MaterialShapeDrawable as background (it allows shaping and elevation overlays for Dark Themes).
Also MaterialCardView supports checking and dragging.


I made a research in the last days about the history of Android libraries and I've got a conclusion that I'd like to share:

  1. The component android.support.v7.widget.CardView is part of an old library and it's recommended to be replaced with com.google.android.material.card.MaterialCardView
  2. Android support library (android.support.*) is an old library that was replace by the new Android X Library in 2018 (which is part of Jetpack Library) and also by material components android

References:

https://medium.com/@neerajmoudgil/upgrading-to-new-android-material-design-components-e62ddb03c3d2

https://developer.android.com/reference (It's big, but worth to take a look for beginners who would like to understand the history of Android Libraries and also about all of the Android Versions)


According to Material Design docs

MaterialCardView is a customizable component based on CardView from the Android Support Library. MaterialCardView provides all of the features of CardView, but adds attributes for customizing the stroke and uses an updated Material style by default.