gpt4 book ai didi

android - "Ugly"Pre-Lollipop 设备上的 CardView

转载 作者:行者123 更新时间:2023-11-30 00:42:09 24 4
gpt4 key购买 nike

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

在 Android 5 + 上 enter image description here

Android < 5 enter image description here

代码是一样的:

<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>

有没有办法在 Lollipop 之前的设备上实现 Android 5+ 的行为?

最佳答案

使用支持CardView?没有。

我个人认为支持 CardView 已损坏,根本不应该使用。它在 Lollipop 和旧系统上的外观和工作方式略有不同。阴影不同,填充不同,内容剪辑在 Lollipop 之前的设备上不起作用等。API 也很奇怪且令人困惑。这就是为什么很难在所有平台上都取得好成绩的原因。如果你可以没有卡片生活,我会选择那种方式。

当然可以创建自定义的、美观的、向后兼容的卡,但这是一项有点复杂的任务。要自己创建卡片,您必须实现:

  • 带有内容剪辑的圆角(在支持的 CardView 中不起作用)。 Here's how to do it properly .
  • 在卡片外部绘制阴影(不在卡片内部,如支持的 CardView)。这取决于您的需求。我会在父容器中覆盖 drawChild(...),我可以在父容器中自由地在卡片周围绘制阴影。阴影生成方法无关紧要 - 它可以是渐变、静态 9 补丁或 RenderScript 模糊黑色形状。

我也对 CardView 的外观和 API 感到沮丧,所以我创建了自己的实现。它可以在 GitHub 上找到 - 该库名为 Carbon使用它可能是获得一张像样的卡片的最简单方法。导入库后,只需将 style="?attr/carbon_cardViewStyle" 添加到任何布局,使其看起来像一张卡片:

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

关于android - "Ugly"Pre-Lollipop 设备上的 CardView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42389204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com