com.google.android.material中的CardView和android.support.v7.widget中的有什么区别?

41

我想了解两个小部件之间的区别,一个是在Android Studio IDE组件面板中添加的android.support.v7.widget.CardView,另一个是在Material Design文档中使用的com.google.android.material.card.MaterialCardView

它们是包含相同小部件的两个库吗?我应该使用哪个,如何做出这个决定?

我尝试阅读更多的developers.android文档,但是开发者文档非常大,有很多版本,我还有点困惑,无法找到有关所有这些版本之间的良好解释,以及它们的历史和如何到达那里的。有人能给我介绍一下这段历史吗?

Material Design文档用法:

<com.google.android.material.card.MaterialCardView
    android:layout_width="match_parent"
   android:layout_height="wrap_content">
</com.google.android.material.card.MaterialCardView>

来源:https://material.io/develop/android/components/material-card-view/

在使用Android Studio时添加的CardView XML:

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</android.support.v7.widget.CardView>

这是具有更清晰外观的Material布局。 - Gourav
那么,推荐使用android.support/androidx(据我所读,这是旧支持库的版本)而不是遵循使用com.google.android.material的材料指南吗? - Tarcisio Júnior
不,我也推荐Material主题。我只是在解释Material和Support库之间的区别。 - Gourav
5
请注意,com.google.android.material.card.MaterialCardView 继承自 androidx.cardview.widget.CardView。参见 https://developer.android.com/reference/com/google/android/material/card/MaterialCardView.html - Albert Vila Calvo
3个回答

90
有3个版本:
  • android.support.v7.widget.CardView:它由旧的支持库提供,已被弃用。

  • androidx.cardview.widget.CardView 是新的androidx版本,替代了旧的支持库。
    要使用它,您必须添加依赖项implementation 'androidx.cardview:cardview:x.x.x'

  • com.google.android.material.card.MaterialCardViewMaterial Components Library提供。 要使用它,您必须添加依赖项实现 'com.google.android.material:material:1.1.0'

MaterialCardView 扩展androidx.cardview.widget.CardView 并引入了一些更改, 如使用 MaterialShapeDrawable 作为背景(它允许形状化暗主题的高程叠加)。
此外,MaterialCardView支持勾选拖动


9
这应该是最佳答案。它提供了所有上下文来全面理解这些组件之间的区别。 - MrWeeMan
2
com.google.android.material.card.MaterialCardView 默认情况下也具有前景选择器。 - Ionut Negru

18

最近我对Android库的历史进行了研究,得出了以下结论:

  1. 组件android.support.v7.widget.CardView是旧库的一部分,建议替换为com.google.android.material.card.MaterialCardView。
  2. Android support library (android.support.*) 是一个旧库,它在2018年被新的Android X Library(Jetpack Library的一部分)和Material Components Android所取代。

参考资料:

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

https://developer.android.com/reference (这是一个庞大的文档,但对于想要了解Android库历史和所有Android版本的初学者来说很值得一看)


19
androidx.cardview.widget.CardView 怎么样? - argenkiwi
这是一个 AndroidX 版本的 android.cardview。@argenkiwi - kautilya hari

8

根据Material Design文档

MaterialCardView 是一个基于 Android Support Library 的可定制组件,它是基于 CardView 构建的。除了提供 CardView 的所有功能外,MaterialCardView 还添加了自定义描边属性,并默认使用了更新的 Material 风格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接