好记性不如破键盘
设计给了差不多是这样一张图:
So Easy ,一个 shape
加个 radius
就好啦,像这样:
1 | <?xml version="1.0" encoding="UTF-8"?> |
但是由于银行种类有十多种,颜色也不尽相同,这个时候由于我们是在 background
中直接设置 drawable
的,切换颜色的时候就会导致,圆角消失了。
除非你直接写十多个不同颜色的 shape
,那好像不大好…
所以我们要修改 solid
的中的颜色而不是 background
中的颜色。( MDZZ 一开始我老是在想怎么加个圆角的外框,这样里面的颜色修改圆角就不会消失了,还是同事提醒我的)
Google 一下, 有人是这样解决的:
就是说获取边框对象,创建 GradientDrawable
对象,用其 setColor()
方法动态的修改 solid
中的颜色。
好像很简单,我试了下,报错了。
和下面那哥们回复的差不多,类型转换错误,看来是 getBackground()
方法获取到的对象不一定是 GradientDrawable
,于是我添加了许多 ITEM,打了个 LOG ,getBackground().getClass().toString()
,将类型都打印了出来。
发现其中除了 GradientDrawable
还有 ColorDrawable
,再然后发现 ColorDrawable
也有动态设置 solid
颜色的方法。
那就简单了:
1 | if (holder.userinfo_layout.getBackground().getClass().toString().contains("GradientDrawable")) { |
简单粗暴,KO。