我是 Android/Kotlin/Anko 的新手,我对从 Anko 中访问颜色(可能还有其他)资源的方式有疑问。
我知道有一些帮助程序,例如textResource
您只需传递R.string.my_color
以简化设置资源字符串的过程,但是如何使用类中的Resources
实例访问颜色View
?
假设您有一个子类Button
并且想要更改文本颜色。如果你使用textResource
它会改变文本字符串而不是颜色,如果你使用textColor
那么你必须通过使用它来指定真实的资源ID,resources.getColor(R.color.my_color, null)
如果你不必传递可选的主题参数(null
这里)就不会那么烦人了
在这里创建一个扩展Resources
有用吗?
fun Int.fromResources(resources: Resources): Int {
return resources.getColor(this, null)
}
推荐的方法是什么?
编辑
我更改了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))