Eu tenho um Activity
com um EditText
, um botão e um ListView
. O objetivo é digitar uma tela de pesquisa EditText
, pressione o botão e faça com que os resultados da pesquisa preencham esta lista.
Tudo está funcionando perfeitamente, mas o teclado virtual está se comportando de maneira estranha.
Se clicar no botão EditText
, obtenho o teclado virtual. Se eu clicar no botão "Concluído" no teclado virtual, ele desaparecerá. No entanto, se eu clicar no botão de pesquisa antes de clicar em "Concluído" no teclado virtual, o teclado virtual permanece e não consigo me livrar dele. Clicar no botão "Concluído" não fecha o teclado. Altera o botão "Concluído" de "Concluído" para uma seta e permanece visível.
Obrigado pela ajuda
fonte
inputManager.hideSoftInputFromWindow((null == getCurrentFocus()) ? null : getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
fonte
Use o código abaixo
fonte
Você deve implementar
OnEditorActionListener
para o seu EditViewE você oculta o teclado:
Você também deve acionar o teclado oculto no botão usando
onClickListener
Agora, clicar em 'Concluído' no teclado e botão virtuais fará o mesmo - ocultar o teclado e executar a ação do clique.
fonte
TextView.OnEditorActionListener
.Adicione o seguinte código ao evento de clique no botão:
fonte
Como você possui apenas um texto de edição, basta chamar a ação executada para esse texto de edição dentro do clique no botão e o restante é tratado pelo sistema. Se você tivesse mais de um edittext, isso não seria tão eficaz porque você precisa obter o edittext focado primeiro. Mas no seu caso, ele funcionará perfeitamente
fonte
Para Atividade,
Para fragmentos, use getActivity ()
getActivity (). getSystemService ();
getActivity (). getCurrentFocus ();
fonte
Esta solução funciona perfeita para mim:
fonte
Tente isso ...
Para mostrar teclado
Para ocultar teclado
fonte
fonte
Exemplo de Kotlin:
de Fragment:
da atividade:
fonte
Você usa esse código no evento de clique no botão
fonte
Correção de exceção de ponto nulo de falha: tive um caso em que o teclado pode não abrir quando o usuário clica no botão. Você deve escrever uma instrução if para verificar se getCurrentFocus () não é nulo:
fonte
Se você definir
android:singleLine="true"
, automaticamente o botão oculta o teclado ¡fonte