我有一个特殊情况,我需要在 CardView(或与 CardView 非常相似的视图)中显示项目列表。
该功能运行良好,但我遇到了一些关于 UI 的不一致:
- 在 API bellow 21 上,CardView 显示为空(我猜这是由于 CardView 小部件如何设置它的填充,以便它可以绘制它的阴影 - 模拟海拔)-> 我通过显示或隐藏整个视图来克服这个问题,具体取决于适配器状态,如果我有数据或没有
- 边角显示不正确且 UI 在所有 API 级别上不一致
- 对于 RecyclerView 项目的删除操作,动画有点奇怪。RecyclerView 的高度首先被调整大小,然后下一行被动画到被删除的行视图的位置。
此外,我不能依赖 CardView 内容填充,因为我有与卡片视图宽度匹配的分隔线。
有没有人遇到过类似的情况并找到了解决方案?
预先感谢您提供有关如何实现此目的的任何帮助或提示。
LE:我在 API 22 和 API 16 上添加了屏幕截图。
API 16:
API 22:
CardView 内 RecyclerView 上方的 CardView 是一个简单的 CardView,只有一个 TextView 作为它的内容。如您所见,简单 CardView 之间存在差异,API 级别之间也存在差异。
解决方案:
我已经确定了问题并分两步解决了它:
- 错误的边距和角落是由于行视图布局中的一些过度绘制。我已经完全从行视图中删除了背景,并且只将背景留在了 RecyclerView 的父 CardView 持有者上。
- 当没有可用数据时显示 RecyclerView 的空 CardView 持有者我已经通过在 RecyclerView 的适配器上添加数据观察器来修复,并且我总是根据我需要显示的项目数更新 CardView 持有者可见性(当为空时我用它的 CardView 持有者完全隐藏了列表)。