Как использовать атрибут selectableButtonBackground
в пользовательском представлении, который использует метод apply()
Anko внутри своего конструктора, например, следующую структуру?
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)
но без успеха.
Я просто создал функцию расширения, чтобы получить идентификаторы ресурсов для атрибутов.
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