Eu tenho uma pergunta relativamente simples. Eu tenho uma atividade com muitos EditText's neles. Quando eu abro a atividade, ela automaticamente focaliza o primeiro EditText e exibe o teclado virtual.
Como posso evitar isso?
Eu tenho uma pergunta relativamente simples. Eu tenho uma atividade com muitos EditText's neles. Quando eu abro a atividade, ela automaticamente focaliza o primeiro EditText e exibe o teclado virtual.
Como posso evitar isso?
Respostas:
Use estes atributos em sua tag de layout no arquivo XML:
Conforme relatado por outros membros em comentários, ele não funciona,
ScrollView
portanto, você precisa adicionar esses atributos ao filho principal deScrollView
.fonte
Você pode adicionar isso à sua atividade de Manifesto do Android:
fonte
android:windowSoftInputMode="stateHidden|adjustPan"
Tenho várias implementações descritas aqui, mas agora adicionei à propriedade
AndroidManifest.xml
for myActivity
:Acho que essa é a maneira mais fácil, mesmo se você estiver usando
fragments
.fonte
Se você tiver outra visão de sua atividade, como um
ListView
, também pode fazer:em seu onResume () para obter o foco do
editText
.Eu sei que esta pergunta foi respondida, mas apenas fornecendo uma solução alternativa que funcionou para mim :)
fonte
https://stackoverflow.com/a/11627976/5217837 Isso está quase correto:
Mas deve ser SOFT_INPUT_STATE_HIDDEN em vez de SOFT_INPUT_STATE_ALWAYS_VISIBLE
fonte
Use isso no código da sua atividade:
fonte
Tive um problema semelhante, mesmo ao alternar entre as guias, o teclado apareceu automaticamente e permaneceu ativo, com o Android 3.2.1 em um Tablet. Use o seguinte método:
No onCreate () e no onPause () da atividade para cada EditText:
setEditTextFocus (myEditText, false);
Para cada EditText um OnTouchListener:
Para cada um
EditText
emOnEditorActionListener
:E para cada um
EditText
nolayout xml
:Provavelmente, há mais otimização de código possível.
fonte
fonte
Eu encontrei esta solução simples que funcionou para mim. Defina estes atributos em seu layout pai:
E agora, quando a atividade começar, esse layout principal receberá o foco por padrão.
Além disso, podemos remover o foco das visualizações filhas em tempo de execução, dando o foco ao layout principal novamente, como este:
Espero que funcione para você.
fonte
esta é a solução que estou usando, não é a melhor solução, mas está funcionando bem para mim
fonte
Curiosamente, esta documentação https://developer.android.com/training/keyboard-input/visibility.html declara que quando uma atividade começa e o foco é dado a um campo de texto, o teclado virtual não é mostrado (e então passa para mostrar como fazer com que o teclado seja mostrado se você quiser com algum código).
No meu Samsung Galaxy S5, é assim que meu aplicativo (sem entrada de manifesto ou código específico) funciona - sem teclado virtual. No entanto, em um Lollipop AVD, um teclado virtual é mostrado - contrariando o documento fornecido acima.
Se você obtiver esse comportamento ao testar em um AVD, convém testar em um dispositivo real para ver o que acontece.
fonte
Isso tem algumas boas respostas no seguinte post: Impeça que EditText ganhe foco na inicialização da atividade . O que eu uso regularmente é o seguinte código de Morgan :
NOTA : O item fictício deve ser COLOCADO À DIREITA ANTES do elemento focalizável.
E eu acho que deve funcionar perfeitamente mesmo com ScrollView e não teve nenhum problema de acessibilidade para isso.
fonte
Isso ocorre quando seu EditText obtém o Foco automaticamente, assim como quando sua atividade começa. Portanto, uma maneira fácil e estável de corrigir isso é simplesmente definir o foco inicial para qualquer outra visualização, como um botão, etc.
Você pode fazer isso em seu layout XML, sem necessidade de código.
fonte
Resposta aceita não está funcionando para mim, é por isso que dar solução de trabalho de resposta, pode ser útil!
Agora o teclado está aberto, aproveite :)
fonte
Trabalhando bem
fonte
Adicione o código abaixo ao topo do XML da atividade e certifique-se de que a visualização esteja acima do EditText
fonte
android:focusableInTouchMode="true"
Adicione a linha acima ao xml de
EditText
ouTextInputLayout
que tenha o foco e esteja causando osoftInputKeyboard
apareça.Isso resolveu o problema para nós e agora o teclado não aparece
fonte
search_edit_text = (EditText) findViewById (R.id.search_edit_text);
Isso funciona para mim, o fragmento de caras pode ter alguma sintaxe diferente. ISSO FUNCIONA PARA ATIVIDADE
fonte
Se a sua visualização tiver Editar Texto e Listar, o Teclado será aberto por padrão. Para impedir que o teclado apareça por padrão, faça o seguinte
Certifique-se de que está solicitando foco em listview depois de obter view para editText.
Por exemplo
Se você fizer isso, o editText terá o foco e o teclado aparecerá.
fonte