我正在研究一个RecyclerView,它以水平方向显示项目列表。
每个项目都是带有elevation=8dp
的CardView。高程为项目提供了一个阴影,该阴影将被RecyclerView剪切。为了使其正常工作,我添加了android:clipChildren="false"
和android:clipToPadding="false"
以便不再修剪阴影。
一切正常,直到RV的alpha值更改为止。
我用来隐藏RV的动画:
view.apply {
animate().alpha(0f)
.setDuration(300)
.withEndAction { view.visibility = outVisibility }
.start()
}
...和显示它的那个:
view.apply {
if (visibility != View.VISIBLE) alpha = 0f
animate().alpha(1f)
.setDuration(300)
.withStartAction { view.visibility = View.VISIBLE }
.start()
}
问题
只要RV的alpha
低于1.0
,就会修剪RV内部的项目(阴影)。 alpha
到达1.0
时,阴影突然停止被修剪,一切看起来都很好了。
我能做些什么来解决它吗?
如果我在XML中将alpha
设置为低于1.0
的固定值,则会发生相同的问题(在这种情况下根本不设置动画)。
当我尝试为RV中的项目alpha
设置动画时,也会发生相同的问题。
何时RV alpha = 1.0
https://www.dropbox.com/s/g1cun1jqv0op0qw/Screenshot_20190423-180952__01.jpg?dl=0
何时RV alpha = 0.9
https://www.dropbox.com/s/s06f9f3orci135m/Screenshot_20190423-180819__01.jpg?dl=0
更新1
当我尝试为alpha
RV父级而不是RV本身设置动画时,该问题消失了。但是,为了将其alpha动画化,不得不将RV包裹在额外的父对象中似乎有点不明智。