You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android ListView Item阴影效果问题:出现匹配偏移量的黑角

解决ListView Item自定义阴影背景的黑角问题

嘿,我之前也踩过这个坑!你碰到的黑角其实是Android系统的一个小细节——哪怕你没给shape设置radius属性,它默认也会带一点点微小的圆角。当你用layer-list里两个偏移的shape叠加时,这个默认圆角就会在阴影和前景的衔接处露出来,刚好对应你设置的偏移位置,看起来就是恼人的黑角。

解决方案:强制去掉shape的默认圆角

只需要给两个shape都显式添加<corners android:radius="0dp" />,强制让它们变成完全的直角,这样叠加后就不会有阴影的圆角部分漏出来了。修改后的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--shadow to bottom and right-->
    <!--by pushing offset from top and left-->
    <item android:left="0dp" android:right="2dp" android:top="2dp" android:bottom="0dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/darker_gray" />
            <!-- 强制取消默认圆角 -->
            <corners android:radius="0dp" />
        </shape>
    </item>
    <!--foreground-color to cover over non-shadow-->
    <!--need to also offset in opposite direction-->
    <item android:left="2dp" android:right="0dp" android:top="0dp" android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white"/>
            <!-- 同样强制取消默认圆角 -->
            <corners android:radius="0dp" />
        </shape>
    </item>
</layer-list>

额外确认点

虽然你已经设置了周边元素的白色背景,但还是可以快速检查下:

  • ListView本身的背景是否为白色,避免底层底色透出来
  • Item布局的根布局是否也设置了白色背景(不过你的layer-list已经作为背景的话,这个可能不是必须的)

这样修改后,黑角应该就完全消失啦!

内容的提问来源于stack exchange,提问作者AlonAviv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:46:00