Android: Désactiver le clavier souple à tous les EditTexts
Je suis en train de travailler sur une boîte de dialogue à Android avec un peu de EditText
s.
J'ai mis cette ligne à la onCreate()
afin de désactiver le clavier:
Keypad.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Le problème est qu'il ne fonctionne que lorsque la boîte de dialogue apparaît et ne rien faire.
Quand je l'ai passer à la prochaine EditText
, le clavier apparaît pas et ne va pas vers le bas.
Quelqu'un a une idée de comment résoudre ce problème?
- pourquoi voudriez-vous cela?
- J'ai le clavier de mon propre que je veux utiliser, je ne veux pas le clavier virtuel aller jusqu'chaque fois que je clique sur un EditText
Vous devez vous connecter pour publier un commentaire.
créer votre propre classe qui étend la classe
EditText
et remplacer leonCheckIsTextEditor()
:Si vous jeter un regard sur onCheckIsTextEditor() la méthode de mise en oeuvre (TextView), il ressemble à ceci:
Cela signifie que vous n'avez pas à sous-classe, vous pouvez juste:
J'ai essayé de réglage android:inputType="none" dans la mise en page xml mais il ne fonctionne pas pour moi, donc je l'ai fait par programmation.
Essayer..
J'ai été à la recherche de solutions à ce tous les jours, et je suis tombé sur cette approche. Je vais mettre ici car il semble que pour répondre à cette question parfaitement.
Pas besoin de sous-classe. La principale différence entre le présent et de faire de votre EditText non-peut recevoir le focus, c'est que l'EditText a encore son propre curseur, vous pouvez sélectionner du texte, etc. Il n'est de supprimer l'IME de sauter jusqu'à son propre clavier virtuel.
Son été un certain temps depuis ce post, mais voici une méthode simple qui a fonctionné pour moi: dans le fichier xml, dans le
EditText
propriétés, n':android:focusable="false"
. Maintenant, le clavier ne sera pas de popup, même si l'utilisateur clique dessus. Ceci est utile si vous fournissez votre propre clavier.Appel
TextView.setShowSoftInputOnFocus(false)
. Cette méthode est documentée depuis l'API de niveau 21, mais il est déjà là depuis API de niveau 16 (il est juste caché de JavaDoc). Je l'utilise avec l'API de niveau 16 dans un AlertDialog en combinaison avecdialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)
.De l'API de niveau 14, se cache une méthode
setSoftInputShownOnFocus()
qui semble avoir le même objectif, mais je n'ai pas testé cela.L'avantage sur
InputType.TYPE_NULL
est, que tous les types d'entrée peut être utilisé (par exemple pour la saisie du mot de passe) et l'événement tactile positionne le curseur à l'endroit approprié dans le texte.Mettre cela dans la Méthode Oncreate
Sais c'est trop tard, mais avez-vous essayé le paramètre suivant pour EditText dans votre mise en page ?
Mise à JOUR
Utilisation,
editText#setInputType
à0
ouInputType.TYPE_NULL
cette approche Est-elle une mauvaise chose car personne n'avait donné de recommandations positives ?? @Yaniv: une Fois que vous avez confirmé u lire mes commentaires, je vais supprimer ce post car il ne fonctionne pas. Merci!editText.setInputType(InputType.TYPE_NULL)
en conjonction aveceditText.setFocusable(false)
a fonctionné pour moi [API: 19]afin de désactiver ANDROID SOFT CLAVIER d'ENTRÉE de fichier xml n'aide pas dans mon cas
l'appel de la setInputType méthode sur EditText objet en java fichier fonctionne très bien.
voici le code.
Si vous mettez le textViews dans le groupe affichage vous pouvez faire rendre la vue à obtenir la mise au point avant l'un de ses descendants par l'utilisation de ce:
par EditText focusable->false, le clavier n'est pas ouvert lorsque l'utilisateur clique dessus
Vous pouvez le faire:
Il permet de désactiver le clavier pour le textView et le clic ne fonctionne pas plus.