如何在自定义视图中使用selectableButtonBackground
属性,该视图在其构造函数中使用Anko的apply()
方法,如下面的结构?
class XPTO(context: Context) : CardView(context) {
init {
this.apply {
// I'd like to invoke selectableButtonBackground here
}
}
我尝试context.obtainStyledAttributes(arrayOf(R.attr.selectableItemBackground).toIntArray()).getDrawable(0)
,但没有成功。
答案 0 :(得分:2)
我刚刚创建了一个扩展函数来获取属性的资源ID。
val Context.selectableItemBackgroundResource: Int get() {
return getResourceIdAttribute(R.attr.selectableItemBackground)
}
fun Context.getResourceIdAttribute(@AttrRes attribute: Int) : Int {
val typedValue = TypedValue()
theme.resolveAttribute(attribute, typedValue, true)
return typedValue.resourceId
}
这样,您还可以根据需要添加更多属性。把它放在anko中的例子:
frameLayout {
textView {
text = "Test"
backgroundResource = selectableItemBackgroundResource
isClickable = true
}
}
别忘了isClickable,否则当你点击textView时,你不会看到任何内容
答案 1 :(得分:0)
使用Anko实现此目标的另一种方法:
val backgroundResource = attr(R.attr.selectableItemBackgroundBorderless).resourceId