CardView设置背景总显示灰色的解决

今天在做银行卡列表的时候打算用CardView的实现,然后不同的银行卡显示不同背景色,本来打算用取色器去拾取不同的银行卡图标的亮色调,但是为了简单我就自己在colors.xml弄了四个颜色,然后将期放到数组里,通多随机数做下标取出。但是问题来了,每次都显示一种颜色,而且还不在我设置的颜色之内,我就很纳闷。所以我就大概跟了一下源码,大概明白是怎么回事了。

一直不变的效果如下:
这里写图片描述
我的错误代码如下:

int[] bg_colors={R.color.bank_card_1,R.color.bank_card_2,R.color.bank_card_3,R.color.bank_card_4};
 holder.card_view.setCardBackgroundColor(bg_colors[mRandom.nextInt(mLength)]);

这个灰色在源码中对应的是一个颜色十六进制:

public static final int cardview_dark_background = 0x7f0c001f;

其实这里是维护了一个默认值,根据不同的主题取不同的值:
这里写图片描述

看完这个图我就知道我写错了,正确的写法应该是这样的:

int[] bg_colors={R.color.bank_card_1,R.color.bank_card_2,R.color.bank_card_3,R.color.bank_card_4};
  int color = ContextCompat.getColor(context, bg_colors[mRandom.nextInt(mLength)]);
        holder.card_view.setCardBackgroundColor(color);

刚开始我传的就是id编号,并不是一个色值,所以才会做默认处理。去跟getColor你可以知道颜色和主题是进行绑定的:

 @Nullable
    public final int getColor(int id) {
        return getResources().getColor(id, getTheme());
    }

这里确实是我的写法有误,但是我也明白很多,最终结果就是这样的:

这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值