Comment faire pour désactiver le clavier contextuel lorsque sur edittext?
Dans mon application la première vue de tous mes écrans est un EditText, de sorte que chaque fois que je vais à un écran à l'écran clavier s'affiche. comment puis-je désactiver cette popingup et l'activer manuellement cliqué sur le EditText????
eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);
eT.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
}
}
});
code xml:
<ImageView
android:id="@+id/feedPageLogo"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/wic_logo_small" />
<Button
android:id="@+id/goButton_feed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/go" />
<EditText
android:id="@+id/searchAutoCompleteTextView_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/goButton_feed"
android:layout_toRightOf="@id/feedPageLogo"
android:hint="@string/search" />
<TextView
android:id="@+id/feedLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/feedPageLogo"
android:gravity="center_vertical|center_horizontal"
android:text="@string/feed"
android:textColor="@color/white" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ButtonsLayout_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button
android:id="@+id/feedButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/feed"
android:textColor="@color/black" />
<Button
android:id="@+id/iWantButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/iwant"
android:textColor="@color/black" />
<Button
android:id="@+id/shareButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/share"
android:textColor="@color/black" />
<Button
android:id="@+id/profileButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/profile"
android:textColor="@color/black" />
</LinearLayout>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/feedListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/ButtonsLayout_feed"
android:layout_below="@id/feedLabel"
android:textSize="15dp" >
</ListView>
le troisième point de vue (EditText) est l'endroit où l'accent est mis.
- u peut poster votre code xml.entièrement.
Vous devez vous connecter pour publier un commentaire.
La meilleure solution réside dans le Projet de Manifeste fichier (AndroidManifest.xml), ajouter l'attribut suivant dans la
activity
construireExemple:
Description:
Introduit dans:
Lien vers les Docs
Remarque:
Valeurs fixées ci-dessus (autre que "stateUnspecified" et "adjustUnspecified") remplacent celles définies dans le thème.
Vous devez créer une vue, au-dessus de l'EditText, qui prend un "faux" focus:
Quelque chose comme :
Dans ce cas, j'ai utilisé un LinearLayout de demander le focus. Espérons que cette aide.
Cela a fonctionné parfaitement...merci à Zaggo0
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
Maintenant vous pouvez utiliser un clavier personnalisé vous le souhaitez.
Personnes ont proposé de nombreuses solutions formidables ici, mais j'ai utilisé cette technique simple avec mon EditText (rien en java et AnroidManifest.xml est nécessaire). Il suffit de régler votre focusable et focusableInTouchMode false directement sur EditText.
Mon intention est ici d'utiliser cette zone d'édition en Application de verrouillage de l'activité où suis-je demander à l'utilisateur de rentrer le code PIN et je veux montrer à mon habitude du clavier NIP. Testé avec minSdk=8 et maxSdk=23 sur Android Studio 2.1
Ajouter le code ci-dessous sur votre classe d'activité.
Clavier pop-haussé lorsque l'utilisateur clique sur le EditText
Vous pouvez utiliser le code suivant pour la désactivation du Clavier à l'Écran.
Deux Solutions Simples:
Première Solution est ajoutée en dessous de la ligne de code dans le fichier manifeste xml.
Dans le fichier Manifest (AndroidManifest.xml), ajouter l'attribut suivant dans l'activité de construction
android:windowSoftInputMode="stateHidden"
Exemple:
Deuxième Solution est d'ajouter en dessous de la ligne de code dans l'activité
On peut utiliser une solution de ci-dessus. Grâce
Déclarer la variable globale pour InputMethodManager:
Sous onCreate() de la définir:
Définir la onClickListener à modifier le texte à l'intérieur oncreate():
Cela fonctionne.
Utiliser le code suivant, écrire sous
onCreate()
l'essayer.......- je résoudre ce problème à l'aide de code:-
rien de u est de l'entrée par défaut de la calculatrice sur quoi que ce soit, mais u peut définir n'importe quelle chaîne.
essayer
Essayer Avec ceci:
À proximité, vous pouvez utiliser:
Essayer comme ça dans votre code:
Bien, j'ai eu le même problème et je viens d'attaquer avec focusable dans le fichier XML.
Vous êtes probablement à la recherche pour la sécurité aussi. Cela aidera dans cela aussi.
Merci @A. B pour la bonne solution
ce cas, si vous désactivez le clavier en modifier le texte , il suffit d'ajouter android:focusableInTouchMode="false" dans edittext slogan.
travail pour moi dans Android Studio 3.0.1 minsdk 16 , maxsdk26
A.B
s réponse? Ou est-ce une réponse à la question d'origine? Si c'est un commentaire àA.B
réponse de s, alors vous devriez utiliser le commentaire de l'option offerte par StackOverflow et supprimer cette réponse à la question d'origine.Utilisez le code suivant dans votre
onCreate()
méthode-Seule chose que vous devez faire est de que ajouter
android:focusableInTouchMode="false"
à l'EditText en xml et c'est tout.(Si quelqu'un a encore besoin de savoir comment le faire avec la manière facile)Pour Xamarin Utilisateurs:
Si vous utilisez Xamarin
vous pouvez ajouter cette
par la suite, vous pouvez ajouter cette ligne dans OnCreate() la méthode
Si l'appareil ciblé ne prend pas en charge le code ci-dessus, vous pouvez utiliser le code ci-dessous dans l'EditText cliquez sur l'événement
J'ai trouvé le modèle suivant fonctionne bien pour moi dans le code où je veux afficher une boite de dialogue pour l'entrée (par exemple, la chaîne affichée dans le champ de texte est le résultat d'une sélection faite à partir d'une liste de cases à cocher dans un dialogue, plutôt que du texte saisi à partir du clavier).
Initiale clique dans le champ de texte à produire un changement de focus, un répétée sur les rendements d'un événement de clic. J'ai donc remplacer les deux (ici je n'ai pas de refactoriser le code pour illustrer à la fois les gestionnaires font la même chose):
Dans une application Android, j'ai été la construction, j'ai eu trois
EditText
s dans unLinearLayout
disposées horizontalement. J'ai dû prévenir le clavier d'apparaître lorsque le fragment chargé. Outre la définition de l'focusable
etfocusableInTouchMode
de vrai sur leLinearLayout
, j'ai dû mettredescendantFocusability
àblocksDescendants
. DansonCreate
, j'ai appelérequestFocus
sur leLinearLayout
. Cela a empêché le clavier d'apparaître lorsque le fragment est créé.Mise en page -
Dans
onCreate
-mTextSelectorContainer.requestFocus();
Si quelqu'un est toujours à la recherche de la solution la plus simple, définissez l'attribut suivant à
true
sur votre parent dispositionExemple:
Utiliser Cette option pour activer et désactiver EditText....
Essayer cette réponse,
Remarque: uniquement pour les API 11+
Simple,il suffit de Supprimer "" la balise dans le fichier xml
Ce problème peut être triées à l'aide,
Pas besoin de régler editText inputType de toutes les valeurs,
il suffit d'ajouter la ligne ci-dessous,
editText.setTextIsSelectable(true);
inputType
serait. Mais il ne ressemble à ce qui serait bon de savoir si je suis allé avec l'autre réponse, de sorte que même si vous insistez sur le maintien de ce autour de sa propre réponse, veuillez envisager de laisser un commentaire en tout cas.pour tout textview à votre activité (ou de créer de faux vide textfiew avec android:layout_width="0dp"
android:layout_height="0dp"
) et ajouter à cette textview suivante:
android:textIsSelectable="true"
Juste besoin d'ajouter de la propriété
android:focusable="false"
en particulierEditText
dans la mise en page xml. Ensuite, vous pouvez écrire sur listner pourEditText
sans clavier contextuel.