当 RV alpha 小于 1.0 时,RecyclerView 项目阴影被剪裁

met*_*oid 6 android alpha elevation shadow kotlin

我正在开发一个 RecyclerView,它以水平方向显示项目列表。每个项目都是一个具有elevation=8dp. 标高为项目提供了被 RecyclerView 剪切的阴影。因此,为了使其正常工作,我添加了阴影android:clipChildren="false"android:clipToPadding="false"以便不再剪切阴影。一切正常,直到 RV 的 alpha 发生变化。

我用来隐藏 RV 的动画:

view.apply {
            animate().alpha(0f)
                    .setDuration(300)
                    .withEndAction { view.visibility = outVisibility }
                    .start()
        }
Run Code Online (Sandbox Code Playgroud)

...以及展示它的人:

view.apply {
            if (visibility != View.VISIBLE) alpha = 0f
            animate().alpha(1f)
                    .setDuration(300)
                    .withStartAction { view.visibility = View.VISIBLE }
                    .start()
        }
Run Code Online (Sandbox Code Playgroud)

问题

只要alphaRV 低于1.0RV 内部的项目就会被剪裁(阴影)。一旦alpha到达,1.0阴影就会突然停止被剪切,一切看起来又恢复正常了。

我能做些什么来解决它吗?

如果我将 XML 设置alpha为下面的固定值1.0(在这种情况下根本不动画),则会出现同样的问题。当我尝试为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 当我尝试为alphaRV 父级而不是 RV 本身设置动画时,问题就消失了。但不得不将 RV 包裹在额外的父级中只是为了为其 alpha 提供动画效果,感觉有点老套:/