#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