半圆的背景与translationZ导致渲染问题

时间:2019-01-03 12:25:00

标签: android android-layout android-shape

我想为我的主视图创建背景,其中SELECT id.UID UID, math.marks Maths, phys.marks Pysics, bio.marks Biology, cs.marks CS, engl.marks English FROM (SELECT DISTINCT UID FROM subWiseMarks) id LEFT JOIN subWiseMarks math LEFT JOIN subWiseMarks phys USING(UID) LEFT JOIN subWiseMarks chem USING(UID) LEFT JOIN subWiseMarks bio USING(UID) LEFT JOIN subWiseMarks cs USING(UID) LEFT JOIN subWiseMarks engl USING(UID) WHERE math.SUBJECT = 'Maths' AND phys.SUBJECT = 'Physics' AND phys.SUBJECT = 'Chemistry' AND phys.SUBJECT = 'Biology' AND phys.SUBJECT = 'CS' AND phys.SUBJECT = 'English' ; topLeft的角将变为圆角,但右角将是正常的。

我已经为bottomLeft布局做了多次,为每个RecyclerView制作了圆角,但是现在由于使用View或{{1} },使elevation周围出现柔和的阴影。

错误:translationZ

我找到了此错误的原因。如此处所述,似乎Android P的转角半径有些问题:java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE in Button background failure

问题是,如果我应用View,它将改变所有4个角的半径,这是我不想要的。有什么办法使它起作用吗?

这是我的背景xml:

Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed.

1 个答案:

答案 0 :(得分:0)

一种选择是将阴影手动绘制到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>