使用RecyclerView时。如果Item只有一项,会导致阴影失效

使用RecyclerView时。如果Item只有一项,会导致阴影失效

这样说不准确,应该是如果最后一个子项目设置了阴影会被无效!

今天在项目中遇到这样一个问题。
列表展示数据使用的是RecyclerView,美工要求在特定的条件下,需要给子项目添加一个阴影。

获得的数据显示,数据源里只有一个子项目,并且这个子项目是需要设置阴影的。

在xml布局里我使用了elevation这个属性。而且设置了background为白色。在xml布局的预览界面已经可以看到,阴影是生效了的。

但是在实际运行中发现,为子项目设置的阴影并没有生效。

在网上找了很多办法,包括设置outlineProvider,改变elevation的数值,改变RecyclerView的padding,都不能生效。

后来做了这样一个尝试。通过修改数据,将子项目显示为两个,只有第一个设置阴影。结果发现,阴影出来了。然后将两个子项目都设置阴影。结果发现,第二个的阴影设置是无效的。

这里得出了这样一个结论,RecyclerView的最后一个子项目,设置的阴影由于未知力量被无效了。

知道了问题的所在,就有了解决问题的思路。

这里我将需要设置阴影的子项目,在运行时设置了一个margin bottom,首先将margin bottom设置为16,结果发现当需要设置阴影的子项目为RecyclerView的最后一个时,阴影出现了。但是,和设计不符,设计没有16这么大,这里我又尝试了2、1.结果发现 只要给了一个margin bottom,不论多大,阴影都可以显示出来。

最后解决的办法就是,在需要设置阴影的项目,设置了一个margin bottom 为 1。

这里虽然解决了这个问题,但是,不知道为什么,RecyclerView会把最后的阴影给无效掉呢?

你可能感兴趣的:(Android随笔)