Quando o usuário clica em EditView
, o Android abre o teclado para que o usuário possa escrever no EditView
.
O problema é que, quando o usuário termina de escrever, não há como ocultar o teclado. O usuário deve pressionar o botão Voltar para ocultar o teclado.
Existe uma maneira de exibir um Done
botão no teclado que oculte o teclado?
Respostas:
Use TextView.setImeOptions e transmita actionDone. gostar
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
fonte
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.singleLine(true)
para fazer isso funcionar de forma programática.Primeiro, você precisa definir o
android:imeOptions
atributo igual aactionDone
para seu EditText de destino, conforme visto abaixo. Isso mudará o botão 'RETORNAR' no teclado virtual do EditText para um botão 'CONCLUÍDO'.fonte
android:singleLine="true"
para fazer isso funcionar via xmlIncluir ambos
imeOptions
esingleLine
:fonte
No arquivo XML funciona muito bem. Mas isso também fará com que o
editText
continue digitando em uma única linha que você pode não querer. Portanto, adicionar o seguinte ao seu código garantirá que você não acabará digitando tudo em uma única linha.fonte
Para obter o botão concluído
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
e
android:inputType="text"
no xmlPara lidar com o clique feito no teclado
`
fonte
Usa isto:
fonte
actionDone
lá também, apenas no caso de alguns dispositivos reagirem de forma diferente.Use estas duas linhas para o seu
EditText
ou você pode alcançá-lo programaticamente por esta linha.
fonte
Se a propriedade não mudar para o widget, pode ser melhor usar como
android:imeOptions="actionDone"
noxml
arquivo de layout .fonte
Usar:
fonte
Para o código:
fonte
ActionDone é usado quando clica no próximo botão no teclado quando o teclado está escondido. Use em Edit Text ou AppcompatEdit
XML
1.1 Se você usar o AppCompatEdittext
1.2 Se você usar Edittext
JAVA
fonte
Devo salientar isso, pois muitas pessoas podem lutar contra isso sem saber qual é o problema.
Se você quiser que o kb se oculte ao clicar
Done
, e você definirandroid:imeOptions="actionDone"
&android:maxLines="1"
sem definir seu EditText,inputType
ele NÃO funcionará como o padrãoinputType
para o EditText, não é"text"
como muitas pessoas pensam.por isso, a criação única
inputType
vai lhe dar os resultados que deseja tudo o que você está definindo-o como gostaria"text"
,"number"
... etc.fonte
Na verdade, você pode definir o texto personalizado para aquele pequeno botão azul. No arquivo xml apenas use
no seu EditText.
Ou no arquivo java use
Eu escolho arbitrariamente IME_ACTION_DONE como um exemplo do que deve ir no segundo parâmetro para esta função. Uma lista completa dessas ações pode ser encontrada aqui .
Deve-se observar que isso não fará com que o texto apareça em todos os teclados em todos os dispositivos. Alguns teclados não oferecem suporte a texto nesse botão (por exemplo, swiftkey). E alguns dispositivos também não o suportam. Uma boa regra é, se você já vir texto no botão, isso o mudará para o que você quiser.
fonte
Solução Kotlin
A maneira direta de lidar com a ação ocultar teclado + concluída no Kotlin é:
Extensão Kotlin
Use para chamar
edittext.onDone {/*action*/}
em seu código principal. Mantém mais legibilidade e manutençãoExtensões de teclado adicionais
Se você quiser mais maneiras de simplificar o trabalho com o teclado (mostrar, fechar, focar): Leia esta postagem
fonte
use isso em sua visão
fonte
Se você estiver usando
então você deve usar
então, só você pode ver o botão Ação concluída no teclado.
fonte
Se você não quiser nenhum botão (por exemplo, você está desenvolvendo uma GUI para cegos onde o toque não pode ser posicional e você depende de toques simples / duplos / longos):
Ou em Kotlin:
fonte