Android OnClickListener запускается только при втором нажатии

Если я правильно прочитал спецификацию , нет.

Вы можете сопоставлять элемент, имя атрибута в элементе и значение именованного атрибута в элементе. Я не вижу ничего для сопоставления содержимого внутри элемента.

0
задан dimiSan 13 July 2018 в 18:21
поделиться

2 ответа

Я смог добиться желаемого поведения, используя OnTouchListener вместо OnClickListener, например:

override fun onEditTextTouch(editText: EditText, event: MotionEvent): Boolean {
    //-- if the pressed gesture has finished
    if (event.action == MotionEvent.ACTION_UP)
    //-- only show toast if view is not editable (becomes editable on LongClick)
        if (editText.keyListener == null) {
            if (mToast != null) {
                mToast!!.cancel()
            }
            //-- inform user to long press to edit entry
            mToast = Toast.makeText(this, resources.getString(R.string.long_click_to_edit), Toast.LENGTH_LONG)
            mToast!!.show()
        }
    return false
}

В моих предыдущих попытках заменить мой clickListener сенсорнымListener я забыл проверить на (event.action == MotionEvent.ACTION_UP) так мой код также выполнялся при прокрутке (чего я не хотел)

0
ответ дан dimiSan 17 August 2018 в 12:32
поделиться

вы должны сделать атрибут редактирования text focusable false, потому что его значение по умолчанию - автоматическое, и это означает, что фреймворк определяет, что он должен быть истинным и false.When он был правдой при первом касании, он был сфокусирован на клавиатуре.

https://developer.android.com/reference/android/R.styleable#View_focusable

0
ответ дан mahdi shahbazi 17 August 2018 в 12:32
поделиться
  • 1
    при установке focusable на false я больше не могу использовать OnLongClickListener – dimiSan 13 July 2018 в 15:51
  • 2
    @dimiSan добавляет ваш edittext в другое представление, например linearlayout, и нажимает на него длинный клик – mahdi shahbazi 15 July 2018 в 05:07
Другие вопросы по тегам:

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