在写UI时遇到一个需求,是要给一个View添加阴影,并且这个View上有一个Label,布局如下所示:

本来很简单的一个需求,之前也做过。但是运行起来的效果却如下所示:

显然,阴影并没有加到View上,而是加到了Label上,实现的代码并没有什么奇特之处:

然后各种搜,也没有搜到解决方案,最后发现了问题所在:

将View的背景设置一个颜色后,就能达到想要的效果了:

具体原因还不清楚,在此记录以备忘。
其实,在布局时还是尽量少将控件的颜色设为Default,因为该控件的颜色就会继承为其父控件的背景色,容易出现一些意想不到的问题,比方说只设置了父控件的透明度,子控件的透明度也跟着改变了,而且关键是这种问题很难会想到是背景色导致的,比较难定位。
网友评论