首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >材料芯片-找不到资源ID (颜色/图标)

材料芯片-找不到资源ID (颜色/图标)
EN

Stack Overflow用户
提问于 2019-03-23 21:14:27
回答 1查看 657关注 0票数 1

相关代码:

代码语言:javascript
复制
fun updateCategories(categories: List<Category>) {
    categories.forEach {
        var chipText = "${it.title.capitalize()} (${it.amount})"
        val chip = Chip(context)
        chip.text = chipText
        chip.isCheckable = true
        chip.chipBackgroundColor = null
        when(it.title.toLowerCase()){ 
            "utilities" -> {
                chip.setChipIconTintResource(Color.parseColor("#115FFF"))
                chip.setChipStrokeColorResource(Color.parseColor("#115FFF"))                    
           chip.setChipDrawable(ChipDrawable.createFromResource(this.context, R.drawable.ic_utilities))
            }

        chips_group.addView(chip)
    }
}

因此,对于这段代码,我有两个错误,颜色为Expected a color resource id (R.color.) but received an RGB integer,可绘制内容为Expected resource of type xml

我可以通过添加一个@SuppressLint("ResourceType")来修复这个错误,但这会导致运行时错误,因为代码中没有找到颜色id或可绘制的资源

如果我注释颜色并保留可绘制内容,则错误为android.content.res.Resources$NotFoundException: Can't load chip resource ID #0x7f070078。颜色的错误为

android.content.res.Resources$NotFoundException: Resource ID #0xff115fff

任何帮助都是非常感谢的。

我尝试做的是添加一个带有我指定的图标和颜色的芯片,这是我希望达到的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-23 22:01:55

您面临的一个错误是需要一个颜色资源id (R.color。)

这是因为不是将R.color.tint_resource传递给setChipIconTintResourcesetChipStrokeColorResource,而是传递Color.parseColor(colorString)

将十六进制代码移动到colors.xml并使用它们。

第二件事,你得到资源找不到异常的原因是createFromResource接受了一个xml资源,而你传递了一个可提取的资源。因此,在res/xml文件夹中创建一个xml资源文件。

进行更改后,您的代码将如下所示。

代码语言:javascript
复制
chip.setChipIconTintResource(R.color.chip_icon_tint)
chip.setChipStrokeColorResource(R.color.chip_stroke_color)
chip.setChipDrawable(
    ChipDrawable.createFromResource(this, R.xml.chip_resource)
)

最后,添加@SuppressLint只是抑制警告,与解决问题相比,该警告会升级运行时崩溃的可能性。

Set Chip图标:

代码语言:javascript
复制
chip.chipIcon = ContextCompat.getDrawable(this, R.drawable.ic_utilities)

设置笔划宽度:

代码语言:javascript
复制
chip.chipStrokeWidth = 6f
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55314083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档