android - 5.0 之前如何让 CardView 无缝堆叠(如 Gmail 的 Inbox)

标签 android android-layout android-support-library android-recyclerview android-cardview

我正在实现一个在 RecyclerView 中堆叠 CardViews 的界面,我想要的结果类似于 Inbox by Gmail。正如您在此屏幕截图中所看到的,它在 5.0+ 上运行得很好! 这正是我想要的

5.0+ stacked CardViews (what I want across all API versions)

但是 4.4 及更早版本无法访问 android:elevation 属性,因此元素之间存在视觉分离。

4.4- stacked CardViews (do not want)

现在,有一个属性 android.support.v7.cardview:cardUseCompatPadding这将使 API 21+ 像 API 20 及更低版本一样工作,但我希望相反(让 4.4 的行为像 5.0)。我怎样才能做到这一点?

最佳答案

您可以使用FrameLayout或RelativeLayout作为项目 View 的父级以获得一致的外观。如果您的项目布局如下所示:

<CardView android:layout_width="match_parent"
          android:layout_height="match_parent">

        ...
 </CardView>

您可以将 CardView 元素替换为 FrameLayout:

 <FrameLayout android:layout_width="match_parent"
              android:layout_height="match_parent">
        ...
 </FrameLayout>

在RecyclerView.Adapter.onCreateViewHolder中,您将返回后一个项目布局。

关于android - 5.0 之前如何让 CardView 无缝堆叠(如 Gmail 的 Inbox),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320861/

相关文章:

android - 如何在 Material Design 中展开/折叠 android 组件

java - 仅当字段非空时才验证电子邮件

android - 将 ListView 更改为 ExpandableListView

android - 尝试了解 android 支持库 23.2.1 中 BottomSheet 的行为

android - Facebook SDK 依赖冲突

java - 如何使线性布局出现在 GridView 中?

android - NDK Unresolved inclusion 但路径在 local_c_includes 中用于旁路库

android - marquee 完成时触发事件

java - 设置 Imageview 的背景

android - android : and app: prefix in Android XML? 之间的区别