Когда пользователь нажимает кнопку EditView
, Android открывает клавиатуру, чтобы пользователь мог писать в формате EditView
.
Проблема в том, что когда пользователь закончит писать, нет возможности скрыть клавиатуру. Пользователь должен нажать кнопку «Назад», чтобы скрыть клавиатуру.
Есть ли способ отобразить Done
на клавиатуре кнопку, которая будет скрывать клавиатуру?
Ответы:
Используйте TextView.setImeOptions и передайте ему actionDone. лайк
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
источник
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.singleLine(true)
чтобы это работало программно.Сначала вам нужно установить
android:imeOptions
атрибут, равныйactionDone
для вашего целевого EditText, как показано ниже. Это изменит вашу кнопку «RETURN» на виртуальной клавиатуре EditText на кнопку «DONE».источник
android:singleLine="true"
чтобы заставить это работать через xmlВключите оба
imeOptions
иsingleLine
:источник
В XML-файле работает нормально. Но это также приведет к тому, что
editText
будет продолжать вводить единственную строку, которая вам может не понадобиться. Таким образом, добавление следующего в свой код гарантирует, что вы не наберете все в одной строке.источник
Для кнопки "Готово"
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
и
android:inputType="text"
в xmlДля обработки по готовому щелчку с клавиатуры
`
источник
Использовать это:
источник
actionDone
там тоже, на случай, если некоторые устройства будут реагировать иначе.Используйте эти две строки для своего
EditText
или вы можете добиться этого программно с помощью этой строки.
источник
Если свойство не изменяется для виджета, может быть лучше использовать как
android:imeOptions="actionDone"
вxml
файле макета .источник
Использование:
источник
Для кода:
источник
ActionDone используется при нажатии следующей кнопки на клавиатуре, когда клавиатура скрыта. Используйте в Edit Text или AppcompatEdit
XML
1.1 Если вы используете AppCompatEdittext
1.2 Если вы используете Edittext
ЯВА
источник
Я должен отметить это, поскольку многие люди могут бороться с этим, не зная о проблеме.
Если вы хотите, чтобы kb скрывался при нажатии
Done
, и вы устанавливаетеandroid:imeOptions="actionDone"
&android:maxLines="1"
без установки EditText,inputType
он НЕ будет работать, поскольку по умолчаниюinputType
для EditText это не так,"text"
как думают многие.поэтому, установка только
inputType
даст вам желаемый результат независимо от того, что вы настраиваете это нравится"text"
,"number"
... и т.д..источник
На самом деле вы можете установить собственный текст для этой маленькой синей кнопки. В файле xml просто используйте
в вашем EditText.
Или в файле java используйте
Я произвольно выбираю IME_ACTION_DONE в качестве примера того, что должно быть во втором параметре этой функции. Полный список этих действий можно найти здесь .
Следует отметить, что это не приведет к тому, что текст будет отображаться на всех клавиатурах на всех устройствах. Некоторые клавиатуры не поддерживают текст на этой кнопке (например, swiftkey). И некоторые устройства его тоже не поддерживают. Хорошее правило: если вы уже видите текст на кнопке, это изменит его на все, что вам нужно.
источник
Котлин Решение
Прямой способ обработки скрытой клавиатуры + действия в Kotlin:
Расширение Kotlin
Используйте это для вызова
edittext.onDone {/*action*/}
вашего основного кода. Делает его более читаемым и удобным в обслуживанииДополнительные расширения клавиатуры
Если вам нужно больше способов упростить работу с клавиатурой (показать, закрыть, сфокусировать): прочтите этот пост
источник
используйте это на ваш взгляд
источник
Если вы используете
тогда вы должны использовать
тогда только вы можете увидеть кнопку «Действие выполнено» на клавиатуре.
источник
Если вам вообще не нужна какая-либо кнопка (например, вы разрабатываете графический интерфейс для слепых, где нажатие не может быть позиционным, и вы полагаетесь на одиночные / двойные / длинные нажатия):
Или в Котлине:
источник