Привет, ребята, я новичок в Android/Kotlin/Anko, и у меня возник вопрос о том, как получить доступ к цветным (и, возможно, другим) ресурсам из Anko.Доступ к идентификаторам ресурсов с использованием Kotlin & Anko
Я знаю, что есть помощники, как textResource
, где вы просто передать R.string.my_color
, чтобы упростить процесс настройки строки ресурсов, но как о доступе цвета с использованием экземпляра Resources
из View
класса?
Предположим, у вас есть подкласс Button
и вы хотите изменить цвет текста. Если вы используете textResource
, он изменит текстовую строку, а не цвет, и если вы используете textColor
, тогда вы должны указать идентификатор реального ресурса, используя resources.getColor(R.color.my_color, null)
, что не было бы так обидно, если бы вам не пришлось передавать необязательный параметр темы (null
здесь)
Создает расширение на Resources
Полезно здесь?
fun Int.fromResources(resources: Resources): Int {
return resources.getColor(this, null)
}
Каков рекомендуемый способ?
EDIT
Я изменил расширение на textColor
значение, чтобы сделать именно то, которое я нашел чистейшую вещь, чтобы сделать, кроме как я понятия не имею, если это действительно Android дружеский
var android.widget.TextView.textColor: Int
get() = throw AnkoException("'android.widget.TextView.textColor' property does not have a getter")
set(v) = setTextColor(resources.getColor(v, null))
Я предлагаю использовать 'ContextCompat.getColor (context, R.color.color_id)' вместо 'resources.getColor (v, null)' –