J'ai une question relativement simple. J'ai une activité avec beaucoup d'EditText en eux. Lorsque j'ouvre l'activité, elle se concentre automatiquement sur le premier EditText et affiche le clavier virtuel.
Comment éviter cela?
J'ai une question relativement simple. J'ai une activité avec beaucoup d'EditText en eux. Lorsque j'ouvre l'activité, elle se concentre automatiquement sur le premier EditText et affiche le clavier virtuel.
Comment éviter cela?
Réponses:
Utilisez ces attributs dans votre balise de mise en page dans un fichier XML:
Comme indiqué par d'autres membres dans les commentaires, cela ne fonctionne pas,
ScrollView
vous devez donc ajouter ces attributs à l'enfant principal deScrollView
.la source
Vous pouvez ajouter ceci à votre activité de manifeste Android:
la source
android:windowSoftInputMode="stateHidden|adjustPan"
J'ai plusieurs implémentations décrites ici, mais maintenant j'ai ajouté dans le
AndroidManifest.xml
pour maActivity
propriété:Je pense que c'est le moyen le plus simple, même si vous utilisez
fragments
.la source
Si vous avez une autre vue de votre activité comme un
ListView
, vous pouvez également faire:dans votre onResume () pour récupérer le focus du fichier
editText
.Je sais que cette question a reçu une réponse, mais je propose simplement une solution alternative qui a fonctionné pour moi :)
la source
https://stackoverflow.com/a/11627976/5217837 C'est presque correct:
Mais ce devrait être SOFT_INPUT_STATE_HIDDEN plutôt que SOFT_INPUT_STATE_ALWAYS_VISIBLE
la source
Utilisez ceci dans le code de votre activité:
la source
J'ai eu un problème similaire, même lors du changement d'onglets, le clavier est apparu automatiquement et est resté en place, avec Android 3.2.1 sur une tablette. Utilisez la méthode suivante:
Dans le onCreate () et dans le onPause () de l'activité pour chaque EditText:
setEditTextFocus (myEditText, false);
Pour chaque EditText un OnTouchListener:
Pour chacun
EditText
dans leOnEditorActionListener
:Et pour chacun
EditText
dans lelayout xml
:Il y a probablement plus d'optimisation de code possible.
la source
la source
J'ai trouvé cette solution simple qui a fonctionné pour moi. Définissez ces attributs dans votre mise en page parent:
Et maintenant, lorsque l'activité démarre, cette mise en page principale sera mise au point par défaut.
En outre, nous pouvons supprimer le focus des vues enfants au moment de l'exécution en redonnant le focus à la disposition principale, comme ceci:
J'espère que cela fonctionnera pour vous.
la source
c'est la solution que j'utilise, ce n'est pas la meilleure solution mais ça marche bien pour moi
la source
Fait intéressant, cette documentation https://developer.android.com/training/keyboard-input/visibility.html indique que lorsqu'une activité démarre et que le focus est donné à un champ de texte, le clavier logiciel n'est pas affiché (puis passe à vous montre comment afficher le clavier si vous le souhaitez avec du code).
Sur mon Samsung Galaxy S5, voici comment fonctionne mon application (sans entrée manifeste ni code spécifique) - pas de clavier logiciel. Cependant, sur un Lollipop AVD, un clavier virtuel est affiché - contrairement à la doc donnée ci-dessus.
Si vous obtenez ce comportement lors d'un test dans un AVD, vous souhaiterez peut-être effectuer un test sur un appareil réel pour voir ce qui se passe.
la source
Cela a de bonnes réponses à l'article suivant: Arrêtez EditText de se concentrer au démarrage de l'activité . Celui que j'utilise régulièrement est le code suivant de Morgan :
REMARQUE : élément factice doit être PLACÉ AVANT l'élément focalisable.
Et je pense que cela devrait fonctionner parfaitement même avec ScrollView et que cela n'a pas non plus eu de problèmes d'accessibilité.
la source
Cela se produit lorsque votre EditText obtient automatiquement le focus au début de votre activité. Donc, un moyen simple et stable de résoudre ce problème consiste simplement à définir le focus initial sur n'importe quelle autre vue, telle qu'un bouton, etc.
Vous pouvez le faire dans votre mise en page XML, aucun code requis.
la source
La réponse acceptée ne fonctionne pas pour moi, c'est pourquoi donner une solution de travail de réponse, cela peut être utile!
Maintenant, le clavier est ouvert profitez :)
la source
Fonctionne bien
la source
Ajoutez le code ci-dessous à votre haut de l'activité XML et assurez-vous que la vue est au-dessus de EditText
la source
android:focusableInTouchMode="true"
Ajoutez la ligne ci-dessus au xml de
EditText
ouTextInputLayout
qui a le focus et provoque lesoftInputKeyboard
apparaître le.Cela a résolu le problème pour nous et maintenant le clavier ne s'affiche pas
la source
search_edit_text = (EditText) findViewById (R.id.search_edit_text);
Cela fonctionne pour moi, les fragments peuvent avoir une syntaxe différente. CELA FONCTIONNE POUR L'ACTIVITÉ
la source
Si votre vue contient EditText et Listview, le clavier s'ouvrira par défaut. Pour empêcher le clavier de s'afficher par défaut, procédez comme suit
Assurez-vous que vous demandez le focus sur la liste après avoir obtenu la vue pour editText.
Pour par exemple
Si vous le faites, editText obtiendra le focus et le clavier apparaîtra.
la source