Eu tenho um widget EditText em minha visualização. Quando o usuário seleciona o widget EditText, eu exibo algumas instruções e o teclado virtual aparece.
Eu uso um OnEditorActionListener para detectar quando o usuário completou a entrada de texto e eu dispenso o teclado, oculto as instruções e executo alguma ação.
Meu problema é quando o usuário dispensa o teclado pressionando a tecla BACK. O sistema operacional dispensa o teclado, mas minhas instruções (que preciso ocultar) ainda estão visíveis.
Eu tentei substituir OnKeyDown, mas ele não parece ser chamado quando o botão BACK é usado para dispensar o teclado.
Eu tentei definir um OnKeyListener no widget EditText, mas ele também não parece ser chamado.
Como posso detectar quando o teclado virtual está sendo dispensado?
onKeyPreIme
? Ou existe uma razão particular para que não seja assim?SearchView
, consulte stackoverflow.com/questions/9629313/…Jay, sua solução é boa! obrigado :)
fonte
KeyEvent.ACTION_UP
também?android.support.v7.widget.AppCompatEditText
para tingir.AppCompatEditText
para androidxFiz uma pequena mudança na solução de Jay chamando super.onKeyPreIme ():
Solução maravilhosa, Jay, +1!
fonte
Aqui está o meu EditText personalizado para detectar se o teclado está sendo exibido ou não
fonte
Agora é 2019 ...
Então, criei uma solução mais bacana com o Kotlin
1. Crie uma função de extensão:
2. Onde o ouvinte de alternância está:
3. Use-o em qualquer atividade tão simples como esta :
fonte
Basta criar uma classe que estenda Edittext e usar esse edittext em seu código. Você deve apenas substituir o seguinte método no edittext personalizado:
fonte
Aqui está uma solução com o ouvinte principal. Não tenho ideia de por que isso funciona, mas OnKeyListener funciona se você simplesmente substituir onKeyPreIme em seu EditText personalizado.
SomeClass.java
CustomEditText.java
fonte
Usando a resposta de @olivier_sdg, mas convertido para Kotlin:
Uso:
fonte
Para quem quer fazer o mesmo no Xamarin, traduzi algumas das principais respostas, pois é um pouco diferente. Eu criei uma essência aqui, mas, resumindo, você cria um EditText personalizado e sobrescreve
OnKeyPreIme
assim:... e então na vista ...
fonte
hideSoftInputFromWindow
retorna verdadeiro quando o teclado fecha, usa seu valor para detectar o fechamento do teclado no Androidfonte