带有translationZ的半圆形背景导致渲染问题
Posted
技术标签:
【中文标题】带有translationZ的半圆形背景导致渲染问题【英文标题】:Half Rounded background with translationZ causing render problem 【发布时间】:2019-01-03 12:24:59 【问题描述】:我想为我的主视图创建背景,其中 topLeft
和 bottomLeft
角将被圆角,但右角将是正常的。
我已经为我的RecyclerView
布局多次这样做,以便为每个View
制作圆角,但现在它导致渲染错误,因为我使用elevation
或translationZ
在@ 周围制作软阴影987654328@。
错误:Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed.
我找到了这个错误的原因。似乎 android P 在圆角半径方面存在一些问题,如下所述:java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE in Button background failure
问题是,如果我应用android:radius
,它将改变我不想要的所有 4 个角的半径。有什么方法可以让它发挥作用吗?
这是我的背景 xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/background_light"/>
<corners
android:topLeftRadius="7dp"
android:bottomLeftRadius="7dp"/>
【问题讨论】:
也许您可以使用 background.xml 中的图层列表手动绘制阴影,而不是依赖于高程? 【参考方案1】:一种选择是手动将阴影绘制到您的 background.xml 中。这样做的一个优点是您不需要海拔高度。这样做的一个缺点是阴影会非常锐利(就像它不会有很好的渐变一样,但是通过一些努力也许也可以绘制出来)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="2dp"
android:right="2dp">
<shape android:shape="rectangle">
<solid android:color="#CABBBBBB" />
<corners android:radius="2dp" />
</shape>
</item>
<item
android:bottom="2dp"
android:left="2dp"
android:right="0dp"
android:top="0dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>
【讨论】:
以上是关于带有translationZ的半圆形背景导致渲染问题的主要内容,如果未能解决你的问题,请参考以下文章
javascript 更改div的样式以删除阴影文本并显示带有圆形边框的新背景颜色。