Как создать EditText с крестиком (x) в конце?

Есть ли виджет, например EditText , который содержит кнопку с крестиком, или есть какое-либо свойство для EditText , с помощью которого создается автоматически? Я хочу, чтобы кнопка с крестиком удаляла весь текст, написанный в EditText .

184
задан Joel Christophel 24 October 2013 в 05:55
поделиться

1 ответ

Просто поместите близкий крест как drawableEnd в Вашем EditText:

<EditText
     ...
    android:drawableEnd="@drawable/ic_close"
    android:drawablePadding="8dp"
     ... />

и расширение использования для обработки нажимают (или используйте OnTouchListener непосредственно на Вашем EditText):

fun EditText.onDrawableEndClick(action: () -> Unit) {
    setOnTouchListener { v, event ->
        if (event.action == MotionEvent.ACTION_UP) {
            v as EditText
            val end = if (v.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL)
                v.left else v.right
            if (event.rawX >= (end - v.compoundPaddingEnd)) {
                action.invoke()
                return@setOnTouchListener true
            }
        }
        return@setOnTouchListener false
    }
}

дополнительное использование:

editText.onDrawableEndClick {
    // TODO clear action
    etSearch.setText("")
}
1
ответ дан 23 November 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: