StateListDrawable cannot be cast to android.graphics.drawable.GradientDrawab

项目里面最近很多客户端自定义的按钮形状跟底色要从服务器返回,今天测试遇到一问题,记录一下下:

错误的写法:

 GradientDrawable gradientDrawable = ((GradientDrawable)((TextView)helper.getView(R.id.tv_subject)).getBackground());
if(null !=item.bcolor && !TextUtils.isEmpty(item.bcolor)){
    int color = Color.parseColor(item.bcolor);
    gradientDrawable.setStroke(1,color);
    gradientDrawable.setColor(color);
}

正确写法:

StateListDrawable background = (StateListDrawable) ((TextView)helper.getView(R.id.tv_subject)).getBackground();
Drawable current = background.getCurrent();
if(current instanceof GradientDrawable){
    GradientDrawable gradientDrawable= (GradientDrawable) current;
    if(null !=item.bcolor && !TextUtils.isEmpty(item.bcolor)){
        int color = Color.parseColor(item.bcolor);
        gradientDrawable.setStroke(1,color);
        gradientDrawable.setColor(color);
    }
}

虽然还是不明白为什么要这么做,但是不这么做测试还是不行。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值