Android &引用;“丑陋的”;CardView关于预棒棒糖设备的介绍

Android &引用;“丑陋的”;CardView关于预棒棒糖设备的介绍,android,material-design,android-cardview,Android,Material Design,Android Cardview,我正在使用CardView作为RecyclerView的自定义项。它们在Android 5+上看起来不错,但在较旧的Android版本上却大不相同 在安卓5上+ 安卓

我正在使用
CardView
作为
RecyclerView
的自定义项。它们在Android 5+上看起来不错,但在较旧的Android版本上却大不相同

在安卓5上+

安卓<5

代码相同:

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
card_view:cardCornerRadius="1dp"
card_view:cardElevation="1dp">

... other items ...

</android.support.v7.widget.CardView>

... 其他项目。。。

有没有办法在棒棒糖前的设备上实现Android 5+行为

使用支持卡查看?没有

我个人认为support CardView已损坏,根本不应该使用。它在棒棒糖和旧系统上的外观和工作原理都有点不同。阴影是不同的,填充是不同的,内容剪辑在棒棒糖前的设备上不起作用,等等。API也很奇怪和混乱。这就是为什么在所有平台上都很难获得好的结果。如果你没有牌也能活下去,我会走那条路

当然,可以创建一个定制的、美观的、向后兼容的卡,但这是一个有点复杂的任务。要自行创建卡,您必须实施:

  • 带有内容剪辑的圆角(在support CardView中不起作用)
  • 在卡外部绘制的阴影(而不是内部,如support CardView)。这取决于你的需要。我会覆盖父容器中的
    drawChild(…)
    ,在那里我可以自由地在卡片周围绘制阴影。阴影生成方法并不重要——它可以是渐变、静态9面片或渲染脚本模糊的黑色形状
我对CardView的外观和API也很失望,所以我创建了自己的实现。可以在GitHub上找到它——调用该库,使用它可能是获得一张像样卡的最简单方法。导入库后,只需将
style=“?attr/carbon\u cardViewStyle”
添加到任何布局中,使其看起来像一张卡片:

<carbon.widget.RelativeLayout 
    style="?attr/carbon_cardViewStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>