Actuellement, j'ai une mise en page qui contient un Button
, un TextView
et un EditText
. Lorsque la mise en page est affichée, le focus sera automatiquement mis sur le EditText
, ce qui déclenchera l' affichage du clavier sur le téléphone Android. Ce n'est pas ce que je veux. Existe-t-il un moyen de définir le focus sur TextView
ou sur rien lorsqu'une mise en page est affichée?
90
Vous devez ajouter ceci:
la source
Ensemble
dans votre
<EditText/>
la source
Pour définir le focus, retardez le requestFocus () à l'aide d'un Handler.
la source
Vous pouvez simplement essayer de cacher le clavier. Quelque chose comme ça:
la source
Essayer
la source
Définissez également ces lignes sur
OnResume
et assurez-vous que sifocusableInTouch
est défini sur true lorsque vous initialisez vos contrôlesla source
pour changer le focus, rendre le textView au format xml focalisable
et en java dans sur create
textView.requestFocus();
ou cachez simplement le clavier
la source
Aucune des réponses ci-dessus ne fonctionne pour moi. La seule solution (disons) a été de changer le premier TextView dans un désactivé EditText qui reçoit le focus, puis d'ajouter
dans le rappel onCreate pour empêcher l' affichage du clavier. Maintenant, mon premier EditText ressemble à un TextView mais peut enfin obtenir le focus initial.
la source
La dernière suggestion est la bonne solution. Pour répéter, définissez d'abord
android:focusable="true"
dans lexml
fichier de mise en page , puisrequestFocus()
sur la vue dans votre code.la source
je pense qu'une vue de texte n'est pas focalisable. Essayez de définir le focus sur un bouton, par exemple, ou de définir la propriété focusable sur true.
la source
vous pouvez ajouter un texte d'édition de taille "0 dip" comme premier contrôle dans ur xml, donc, cela obtiendra le focus sur le rendu. (assurez-vous qu'il est focalisable et tout ...)
la source
Vous pouvez commencer par ajouter
android:windowSoftInputMode
à votre activité dans leAndroidManifest.xml
fichier.Cela empêchera le clavier de s'afficher, mais il aura
EditText
toujours le focus. Pour résoudre ce problème, vous pouvez définirandroid:focusableInTouchmode
etandroid:focusable
activertrue
sur votre vue racine.Le code ci-dessus s'assurera que
RelativeLayout
le focus est mis au point au lieu deEditText
la source
L'accent est mis sur la sélection des composants de l'interface utilisateur lorsque vous utilisez autre chose que le toucher (c'est-à-dire un d-pad, un clavier, etc.). Toute vue peut recevoir le focus, bien que certaines ne soient pas focalisables par défaut. (Vous pouvez rendre une vue focalisable avec
setFocusable(true)
et la forcer à être focalisée avecrequestFocus()
.)Cependant, il est important de noter que lorsque vous êtes en mode tactile, la mise au point est désactivée . Donc, si vous utilisez vos doigts, changer la mise au point par programme ne fait rien. L'exception à cela concerne les vues qui reçoivent des entrées d'un éditeur d'entrée. Un
EditText
est un tel exemple. Pour cette situation particulière, ilsetFocusableInTouchMode(true)
est utilisé pour indiquer au clavier virtuel où envoyer l'entrée. UneEditText
a ce paramètre par défaut. Le clavier virtuel apparaîtra automatiquement.Si vous ne voulez pas que le clavier virtuel apparaisse automatiquement, vous pouvez le supprimer temporairement comme @abeljus l'a noté:
Lorsqu'un utilisateur clique sur le
EditText
, il doit toujours afficher le clavier.Lectures complémentaires:
la source