Atualmente, tenho um layout que contém um Button
, um TextView
e um EditText
. Quando o layout for exibido, o foco será colocado automaticamente no EditText
, o que fará com que o teclado apareça no telefone Android. Não é o que eu quero. Existe alguma maneira de definir o foco em TextView
ou em nada quando um layout é exibido?
90
Você deve adicionar isto:
fonte
Conjunto
na tua
<EditText/>
fonte
Para definir o foco, atrase requestFocus () usando um Handler.
fonte
Você pode tentar apenas ocultar o teclado. Algo assim:
fonte
Experimentar
fonte
Defina essas linhas
OnResume
também e certifique-se de quefocusableInTouch
esteja definido como verdadeiro enquanto inicializa seus controlesfonte
para mudar o foco, torne textView em xml focalizável
e em java na criação
textView.requestFocus();
ou simplesmente esconda o teclado
fonte
Nenhuma das respostas acima funciona para mim. A única (digamos) solução tem sido alterar o primeiro TextView em um EditText desativado que recebe o foco e, em seguida, adiciona
no retorno de chamada onCreate para evitar que o teclado seja mostrado. Agora, meu primeiro EditText se parece com um TextView, mas pode obter o foco inicial, finalmente.
fonte
A última sugestão é a solução correta. Apenas para repetir, primeiro defina
android:focusable="true"
noxml
arquivo de layout e,requestFocus()
em seguida, na visualização do seu código.fonte
acho que uma visualização de texto não pode ser focalizada. Tente definir o foco em um botão, por exemplo, ou definir a propriedade focusable como true.
fonte
você pode adicionar um texto de edição de tamanho "0 dip" como o primeiro controle em seu xml, então, isso terá o foco na renderização. (certifique-se de que pode ser focalizado e tudo ...)
fonte
Você pode começar adicionando
android:windowSoftInputMode
à sua atividade noAndroidManifest.xml
arquivo.Isso fará com que o teclado não apareça, mas
EditText
ainda terá o foco. Para resolver isso, você pode definirandroid:focusableInTouchmode
eandroid:focusable
paratrue
a sua visualização raiz.O código acima garantirá que
RelativeLayout
está obtendo foco em vez deEditText
fonte
O foco é para selecionar os componentes da IU quando você está usando algo além do toque (ou seja, um d-pad, um teclado, etc.). Qualquer visualização pode receber foco, embora alguns não sejam focalizáveis por padrão. (Você pode tornar uma visualização focalizável
setFocusable(true)
e forçá-la a ser focalizadarequestFocus()
.)No entanto, é importante observar que, quando você está no modo de toque, o foco é desativado . Portanto, se você estiver usando os dedos, alterar o foco programaticamente não fará nada. A exceção é para visualizações que recebem entrada de um editor de entrada. Um
EditText
é um exemplo. Para esta situação especial,setFocusableInTouchMode(true)
é usado para permitir que o teclado virtual saiba para onde enviar a entrada. UmEditText
tem essa configuração por padrão. O teclado virtual aparecerá automaticamente.Se você não quiser que o teclado virtual apareça automaticamente, pode suprimi-lo temporariamente, conforme observou @abeljus:
Quando um usuário clica no
EditText
, ele ainda deve mostrar o teclado.Leitura adicional:
fonte