XML文件设置自定义控件color属性无效,原因ALPHA_8只记录颜色的alpha值

在Android开发中,使用ShadowLayout为控件添加均匀阴影时,发现color属性无法改变阴影颜色,原因是Bitmap.Config.ALPHA_8只记录透明度。通过改为使用Bitmap.Config.ARGB_8888,可以成功保存颜色和透明度信息,从而解决阴影颜色自定义问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

因为需要给控件四周添加一层均匀的阴影,而使用CardView给控件所添加的阴影其实不是均匀分布在四周的,而是点光源和自然光组合照射的结果,这种情况下控件底边阴影颜色最深。看图会更清晰:

shadow.png

所以重新找其他替代的控件,在Github找到一个给View添加阴影控件shadow-layout能够给控件四周添加均匀阴影。不过在使用的过程中发现了一些问题。

遇到的问题

ShadowLayout有一个color属性app:sl_shadowColor="#ff0000",但是当我修改阴影颜色时,无论修改什么颜色,阴影颜色始终是黑色。

问题原因

这就让我很困惑了,明明修改了颜色,为什么没有起作用?在自定义的ShadowLayout控件文件里,在获取颜色值的位置添加断点,发现实际上是能获取到颜色值的。这让我更加困惑。

mShadowColor = attr.getColor(R.styleable.ShadowLayout_sl_shadowColor, getResources().getColor(R.color.default_shadow_color)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值