La froma más simple para obtener el color definido en colors.xml es mediante una extensión de Kotlin
Obtener color definido en colors.xml
Context.getColorCompat una extensión de kotlin para obtener el color desde un recurso Android
fun Context.getColorCompat(@ColorRes id: Int) = ContextCompat.getColor(this, id)
Su uso
Para obtener el color desde su identificador de la tabla Resource
val color = this.getColorCompat(R.color.black)
Des de un fragmento se usa el requireContext()
val color = requireContext().getColorCompat(R.color.black)
Obtener color definido en un atributo
Hay algunos colores que se establecen mediante atributos, para poder obtener su color mediante Kotlin
@ColorInt
fun Context.getColorFromAttr(@AttrRes attrColor: Int
): Int {
val typedArray = theme.obtainStyledAttributes(intArrayOf(attrColor))
val textColor = typedArray.getColor(0, 0)
typedArray.recycle()
return textColor
}
Su uso
context.getColorFromAttr(android.R.attr.textColorSecondary)