0

我有一个特殊情况,我需要在 CardView(或与 CardView 非常相似的视图)中显示项目列表。

该功能运行良好,但我遇到了一些关于 UI 的不一致:

  • 在 API bellow 21 上,CardView 显示为空(我猜这是由于 CardView 小部件如何设置它的填充,以便它可以绘制它的阴影 - 模拟海拔)-> 我通过显示或隐藏整个视图来克服这个问题,具体取决于适配器状态,如果我有数据或没有
  • 边角显示不正确且 UI 在所有 API 级别上不一致
  • 对于 RecyclerView 项目的删除操作,动画有点奇怪。RecyclerView 的高度首先被调整大小,然后下一行被动画到被删除的行视图的位置。

此外,我不能依赖 CardView 内容填充,因为我有与卡片视图宽度匹配的分隔线。

有没有人遇到过类似的情况并找到了解决方案?

预先感谢您提供有关如何实现此目的的任何帮助或提示。

LE:我在 API 22 和 API 16 上添加了屏幕截图。

API 16:

API 16

API 22:

API 22

CardView 内 RecyclerView 上方的 CardView 是一个简单的 CardView,只有一个 TextView 作为它的内容。如您所见,简单 CardView 之间存在差异,API 级别之间也存在差异。

解决方案:

我已经确定了问题并分两步解决了它:

  • 错误的边距和角落是由于行视图布局中的一些过度绘制。我已经完全从行视图中删除了背景,并且只将背景留在了 RecyclerView 的父 CardView 持有者上。
  • 当没有可用数据时显示 RecyclerView 的空 CardView 持有者我已经通过在 RecyclerView 的适配器上添加数据观察器来修复,并且我总是根据我需要显示的项目数更新 CardView 持有者可见性(当为空时我用它的 CardView 持有者完全隐藏了列表)。
4

0 回答 0