Я пытаюсь заставить MyEditText расширить класс EditText только с одним изменением: не отображается «подсказка» с ошибкой.Отображать только значок (!), Когда editText.error = "некоторая ошибка"
class MyEditText : EditText {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
override fun setError(error: CharSequence, icon: Drawable) {
setCompoundDrawables(null, null, icon, null)
}
}
Когда я использую в Anko DSL
editText {
id = editNameId
}
и в коде, который я пытался привести:
private lateinit var editName: MyEditText
editName = find<MyEditText>(editNameId)
// or other variants
// editName = find<EditText>(editNameId)
// editName = find<EditText>(editNameId) as MyEditText
Я получил ошибку, которая не может привести EditText к MyEditText.если я правильно понимаю, мне нужно сделать свой собственный тег виджета для Anko.
myEditText {
id = editNameId
}
Я обнаружил, что должен работать аналогичный код для:
inline fun ViewManager.myEditText() = myEditText {}
inline fun ViewManager.myEditText(theme: Int = 0, init: MyEditText.() -> Unit) = ankoView({MyEditText(it)}, theme, init)
Это не работает, потому что я не понимаюне знаю, как передать конструктору два параметра: context и attrs.
Я давно думаю об этой проблеме и не могу ее решить; /
Спасибо заваше время.