gpt4 book ai didi

android - Material 芯片 - 找不到资源 ID(颜色/图标)

转载 作者:行者123 更新时间:2023-11-29 18:33:07 25 4
gpt4 key购买 nike

相关代码:

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)
}
}

所以对于这段代码,我有 2 个错误,需要一个颜色资源 ID (R.color.) 但收到了一个 RGB 整数可绘制对象的 xml 类型的预期资源

我可以通过添加一个 @SuppressLint("ResourceType") 来修复这个错误,但是当到达这段关于找不到资源的颜色 ID 或可绘制资源时,这会导致运行时错误

如果我评论颜色并保留可绘制对象的错误是android.content.res.Resources$NotFoundException:无法加载芯片资源 ID #0x7f070078
颜色的错误是
android.content.res.Resources$NotFoundException:资源 ID #0xff115fff

感谢任何帮助。

我试图做的是添加一个带有我指定的图标和我选择的颜色的筹码,这是我希望达到的结果 enter image description here

最佳答案

您遇到的错误之一是需要颜色资源 ID (R.color.)

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

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

第二件事,你得到资源未找到异常的原因是 createFromResource 需要一个 xml 资源并且你传递了一个可绘制资源。因此,在 res/xml 文件夹中创建一个 xml 资源文件。

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

chip.setChipIconTintResource(R.color.chip_icon_tint)
chip.setChipStrokeColorResource(R.color.chip_stroke_color)
chip.setChipDrawable(
ChipDrawable.createFromResource(this, R.xml.chip_resource)
)

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

设置芯片图标:

chip.chipIcon = ContextCompat.getDrawable(this, R.drawable.ic_utilities)

设置描边宽度:

chip.chipStrokeWidth = 6f

关于android - Material 芯片 - 找不到资源 ID(颜色/图标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55314083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com