CardView的优缺点

22
除了阴影或高程之外,使用 CardView 的优缺点是什么?在性能和美观方面,使用 CardView 有什么好处?使用其他布局组合也可以完成 CardView 所做的事情。

CardViewListView 除了 阴影圆角 外没有区别。在 ListView 中可以做到 CardView 中的所有功能。 - Apurva
1个回答

32
Cardview的优点在于其默认实现了阴影和圆角,简单来说Cardview就是一个带有阴影和圆角的FrameLayout。使用Cardview几乎可以做到与Framelayout相同的事情(因为Cardview继承自FrameLayout)。对于API>21的Cardview,它使用elevation api设置阴影,而对于API 21以下的Cardview,它添加灰色背景填充以创建伪阴影(与您谈论的自定义实现类似)。 Cardview设计用于在其内部容纳单个子视图,并且如果没有像layout_belowlayout_torightof等属性,则很难管理多个子视图而不会相互重叠。为了克服这个问题,开发人员采取的方法是在Cardview内添加另一个Relativelayout来管理子视图,这将导致由于嵌套布局而增加资源消耗。
为了处理复杂的布局,建议使用自定义视图,而对于仅使用单个子视图,请使用Cardview
简单来说,Cardview的圆角和阴影所带来的额外开销就像蛋糕上的糖衣和樱桃一样。它很美观,但您必须为糖衣和樱桃额外支付费用。

所以,你的意思是CardView只有在使用Api>21时才有益处。 对于Api<21,它的工作方式与FrameLayout相同。 - Mohammed Ali
2
@MohammedAli 不,对于API<21,它使用自定义实现来显示阴影和角落。因此,好处实际上在于设计在所有API版本中保持一致。 - sorianiv
@Psypher,请也回答一下这个问题:http://stackoverflow.com/questions/36393540/no-shadow-elevation-underneath-second-card-if-there-are-two-card-in-the-layout - user4909407
就我个人而言,我已经对最新的androidx CardView进行了分析,并与使用FrameLayout进行了比较。性能分析看起来完全相同。在渲染阴影时可能会有一些影响,但我找不到它。 - Jeffrey Blattman

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