Фишки материала - не удается найти идентификатор ресурса (цвет / значок) - PullRequest
0 голосов
/ 23 марта 2019

Соответствующий код:

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 ошибки, Expected a color resource id (R.color.) but received an RGB integer для цветов и Expected resource of type xml для рисованных элементов

Я мог бы исправить эту ошибку с помощьюдобавив @SuppressLint("ResourceType"), но это привело к ошибкам во время выполнения при достижении этого кода о том, что ресурс не найден ни по идентификатору цвета, ни по цвету

Ошибка, если я комментирую цвета и сохраняю рисование, равна android.content.res.Resources$NotFoundException: Can't load chip resource ID #0x7f070078 ошибка дляцвета
android.content.res.Resources$NotFoundException: Resource ID #0xff115fff

любая помощь приветствуется.

Что я пытаюсь сделать, это добавить чип с указанным значком и цветом, который я выбрал, этоЯ надеюсь достичь результата enter image description here

1 Ответ

1 голос
/ 23 марта 2019

Одна из ошибок, с которыми вы сталкиваетесь: Ожидаемый идентификатор ресурса цвета (R.color.)

Это потому, что вместо передачи R.color.tint_resource в setChipIconTintResource и setChipStrokeColorResource вы передаете Color.parseColor(colorString)

Переместите шестнадцатеричные коды на colors.xml и используйте их.

Во-вторых, причина, по которой вы получаете исключение не найденного ресурса, заключается в том, что createFromResource берет ресурс xml, а вы передаете извлекаемый ресурс. Итак, создайте файл ресурсов xml в папке res / 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 просто подавляет предупреждение, увеличивая вероятность сбоя во время выполнения по сравнению с решением проблемы.

Set Chip Icon:

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

Заданная ширина хода:

chip.chipStrokeWidth = 6f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...