Désactiver le clavier sur l'EditText
Je suis en train de faire une calculatrice.
J'ai donc fait mon propre Buttons
avec des nombres et des fonctions.
L'expression qui doit être calculé, est dans un EditText
, parce que je veux que les utilisateurs peuvent ajouter des numéros ou aussi des fonctions dans le milieu de l'expression, donc, avec la EditText
j'ai le cursor
. Mais je veux désactiver le Keyboard
lorsque les utilisateurs cliquent sur le EditText
.
J'ai trouvé cet exemple que c'est ok pour Android 2.3
, mais avec ICS
désactiver le Keyboard
et aussi le curseur.
public class NoImeEditText extends EditText {
public NoImeEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onCheckIsTextEditor() {
return false;
}
}
Puis-je utiliser ce NoImeEditText
dans mon XML
fichier
<com.my.package.NoImeEditText
android:id="@+id/etMy"
....
/>
Comment je peux la rendre compatible ce EditText avec ICS???
Merci.
- Comment avez-vous fait à chaque bouton pour mettre le texte au bon endroit dans l'EditText (sur le curseur de texte/lambda) ?
Vous devez vous connecter pour publier un commentaire.
Ici est un site qui va vous donner ce dont vous avez besoin
Comme un résumé, il fournit des liens vers
InputMethodManager
etView
de Développeurs Android. Il fera référence à lagetWindowToken
à l'intérieur deView
ethideSoftInputFromWindow()
pourInputMethodManager
Une meilleure réponse est donnée dans le lien, espérons que cette aide.
voici un exemple de consommer de la onTouch événement:
Voici un autre exemple du même site web. Cette revendication de travail, mais semble être une mauvaise idée, étant donné que votre zone d'édition est la valeur NULL, il ne sera pas non plus un éditeur:
Espère que cela vous mène dans la bonne direction
MyEditor
est un nom de variable, non?Code ci-dessous est à la fois pour l'API >= 11 et de l'API < 11. Le curseur est toujours disponible.
android:inputType="text" android:textIsSelectable="true"
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
- je utilisereditText.setRawInputType(editText.getInputType());
- ce qui garantit que toute inputType paramètres dans le XML sont maintenus.setRawInputType(...)
est mieux quesetInputType(0)
parce qu'il n'a pas de désactiver le curseur.setInputType(InputType.TYPE_NULL)
. encore curseur visible . merci.essayer:
android:editable="false"
ouandroid:inputType="none"
Vous pouvez également utiliser setShowSoftInputOnFocus(boolean) directement sur l'API 21+ ou par le biais de la réflexion sur l'API 14+:
Désactiver le clavier de l'API (11 cours)
C'est la meilleure réponse que j'ai trouvé jusqu'à présent pour désactiver le clavier (et j'ai vu beaucoup d'entre eux).
Il n'est pas nécessaire d'utiliser la réflexion ou de l'ensemble de la
InputType
à null.Réactiver le clavier
Voici comment vous ré-activer le clavier si nécessaire.
Voir ce Q&A pour pourquoi le complexe de pré API 21 version est nécessaire pour annuler
setTextIsSelectable(true)
:Cette réponse doit être testé plus avant.
J'ai testé le
setShowSoftInputOnFocus
supérieur de l'API appareils, mais après @androiddeveloper de commentaire ci-dessous, je vois que ce doit être testé plus avant.Voici quelques cut-et-collez le code pour aider à tester cette réponse. Si vous pouvez confirmer qu'il fonctionne ou ne fonctionne pas pour les API de 11 à 20, merci de laisser un commentaire. Je n'ai pas d'API 11-20 périphériques et mon émulateur est d'avoir des problèmes.
activity_main.xml
MainActivity.java
setTextIsSelectable
?Ajouter ci-dessous les propriétés de l'Edittext contrôleur dans le fichier de layout
J'ai été en utilisant cette solution pour le moment et il fonctionne très bien pour moi.
J'ai trouvé cette solution qui fonctionne pour moi. Il place également le curseur, lorsqu'il est cliqué sur EditText à la bonne position.
Rassemblement des solutions à partir de plusieurs endroits ici sur StackOverflow, je pense que le suivant résume:
Si vous n'avez pas besoin du clavier pour être montré n'importe où sur votre activité, vous pouvez simplement utiliser la prochaine indicateurs qui sont utilisés pour les boîtes de dialogue (obtenu à partir de ici) :
Si vous ne voulez pas seulement pour un EditText, vous pouvez l'utiliser (obtenu à partir de ici) :
Ou ce (prises de ici) :
Suffit de le définir:
ou dans le constructeur:
À ajouter à Alex Kucherenko solution: le problème avec le curseur de la prise en train de disparaître après l'appel de
setInputType(0)
est due à un cadre de bug (ICS et JB).Le bug est documenté ici: https://code.google.com/p/android/issues/detail?id=27609.
Pour contourner ce problème, appelez
setRawInputType(InputType.TYPE_CLASS_TEXT)
à droite après lesetInputType
appel.Pour arrêter le clavier d'apparaître, de substituer
OnTouchListener
de l'EditText et de renvoyer la valeur true (avaler de l'événement tactile):Les raisons pour le curseur figurant sur GO périphériques et non pas sur ICS+ a me déchirer mes cheveux pour un couple d'heures, donc j'espère que cela permet d'économiser de quelqu'un moment.
Cela a fonctionné pour moi.
D'abord ajouter cette
android:windowSoftInputMode="stateHidden"
dans votre fichier manifeste android, en vertu de votre activité. comme ci-dessous:Ensuite sur la méthode onCreate de youractivity, ajouter le foloowing code:
Alors si vous voulez le pointeur pour être visible ajouter sur votre xml
android:textIsSelectable="true"
.Cela rendra le pointeur visible.
De cette façon, le clavier ne sera pas de popup lorsque le début de votre activité et également sera caché lorsque vous cliquez sur le edittext.
Viens de mettre cette ligne à l'intérieur de l'activité de la balise dans le manifeste
android:windowSoftInputMode="stateHidden"