在带有阴影的 LinearLayout 上获取角半径

Posted

技术标签:

【中文标题】在带有阴影的 LinearLayout 上获取角半径【英文标题】:Get corner radius on LinearLayout with shadow 【发布时间】:2019-04-07 19:39:14 【问题描述】:

我需要将圆角半径应用于LinearLayout,它还具有阴影效果的背景。当我尝试将角半径添加到背景 XML 时,我只会在角上得到白色背景。我将用代码和照片演示我的意思。

这是shadow.xml中的代码(注意<corners android:radius="30dp"/>这一行):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--the shadow comes from here-->
<item
    android:bottom="0dp"
    android:drawable="@android:drawable/dialog_holo_light_frame"
    android:left="0dp"
    android:right="0dp"
    android:top="0dp">
</item>

<item
    android:bottom="0dp"
    android:left="0dp"
    android:right="0dp"
    android:top="0dp">
    <!--whatever you want in the background, here i preferred solid white -->
    <shape android:shape="rectangle">
        <solid android:color="@color/myPink" />
        <corners android:radius="30dp"/> //THIS LINE IS NOT INCLUDED IN PHOTO 1
    </shape>
</item>

这是起点(shadow.xml 中没有 &lt;corners android:radius="30dp"/&gt;):

这就是我得到的结果(&lt;corners android:radius="30dp"/&gt; in shadow.xml

现在Linear Layout的拐角处没有白色背景的拐角半径怎么办?

【问题讨论】:

【参考方案1】:

也许您应该尝试添加 android:color="@android:color/transparent" 属性,或者您可以使用 RelativeLayout 并在该布局中使用具有此属性的 ImageView 并设置 android:src="@drawable/shadow "

【讨论】:

【参考方案2】:

您似乎已经在做正确的事情,即将 LinearLayout 放在 CardView 中。只需一点技巧即可达到效果。

LinearLayout 不需要做背景阴影和角。相反,将 CardView 用作容器并将背景、高度(用于阴影)和半径应用于 CardView。

【讨论】:

以上是关于在带有阴影的 LinearLayout 上获取角半径的主要内容,如果未能解决你的问题,请参考以下文章

Android LinearLayout:在 LinearLayout 周围添加带阴影的边框

如何删除LinearLayout阴影? [重复]

预蜂窝上带有分隔线的 LinearLayout

在带有阴影的 UILabel 上使用 SizeToFit()?

带有圆角和阴影的 UIView?

带有圆角和阴影的 UIView?