Kotlin : Нажмите событие для Android EditText, оставленный для рисования

#android #kotlin #android-edittext

#Android #котлин #android-редактировать текст #kotlin

Вопрос:

Следующий код предназначен для щелчка с правой стороны, что я должен изменить на Clickon EditText в левой части?

 fun EditText.onRightDrawableClicked(onClicked: (view: EditText) -> Unit) {
        this.setOnTouchListener { v, event ->
            var hasConsumed = false
            if (v is EditText) {
                if (event.x >= v.width - v.totalPaddingRight) {
                    if (event.action == MotionEvent.ACTION_UP) {
                        onClicked(this)
                    }
                    hasConsumed = true
                }
            }

            hasConsumed
        }
    }
  

Ответ №1:

Вы должны изменить это event.x >= v.width - v.totalPaddingRight на event.x <= v.totalPaddingLeft . Если его по-прежнему не хватает, вы всегда можете увеличить размер вашего чертежа

Ответ №2:

Вы должны использовать нарисованные границы следующим образом

 setOnTouchListener { v, event ->
            if (event.action == MotionEvent.ACTION_DOWN) {
                if ((event.rawX   paddingRight )>= (right - (compoundDrawables.getOrNull(DRAWABLE_RIGHT)?.bounds?.width()
                        ?: 0))
                ) {
                   // right drawable clicked
                } else if (event.rawX - paddingLeft <= ((compoundDrawables.getOrNull(DRAWABLE_LEFT)?.bounds?.width()
                        ?: 0)   left)
                ) {
                    // left drawable clicked
                }
            }
            false
        }
  

Комментарии:

1. const значение DRAWABLE_RIGHT = 2 const значение DRAWABLE_LEFT = 0