Comment désactiver le popup du clavier 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, le clavier à l’écran apparaît. comment puis-je désactiver ce pop-up et l’activer lorsque cliqué manuellement 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:

  

la troisième vue (EditText) est l’endroit où le focus est.

La meilleure solution réside dans le fichier manifeste de projet (AndroidManifest.xml) , ajoutez l’atsortingbut suivant dans la construction d’ activity

android: windowSoftInputMode = “stateHidden”


Exemple:

   

La description:

  • L’état du clavier logiciel – qu’il soit caché ou visible – lorsque l’activité attire l’attention de l’utilisateur.
  • L’ajustement effectué sur la fenêtre principale de l’activité – si elle est redimensionnée pour faire place au clavier logiciel ou si son contenu est déplié pour que le focus actuel soit visible lorsqu’une partie de la fenêtre est couverte par le clavier logiciel.

Introduit dans:

  • Niveau API 3.

Lien vers les documents

Remarque: Les valeurs définies ici (autres que “stateUnspecified” et “adjustUnspecified”) remplacent les valeurs définies dans le thème.

Vous devez créer une vue, au-dessus de EditText, qui prend un faux focus:

Quelque chose comme :

     

Dans ce cas, j’ai utilisé un LinearLayout pour demander le focus. J’espère que cela t’aides.

Cela a parfaitement fonctionné … grâce à Zaggo0

  edittext.setShowSoftInputOnFocus(false); 

Maintenant, vous pouvez utiliser n’importe quel clavier personnalisé que vous aimez.

Ajoutez le code ci-dessous sur votre classe d’activité.

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 

Le clavier apparaîtra lorsque l’utilisateur clique sur le texte d’édition

Les gens ont suggéré beaucoup de bonnes solutions ici, mais j’ai utilisé cette technique simple avec mon EditText (rien dans java et AnroidManifest.xml n’est requirejs). Il suffit de définir votre focusable et focusableInTouchMode sur false directement sur EditText.

   

Mon intention ici est d’utiliser cette boîte d’édition dans l’activité Verrouillage de l’application où je demande à l’utilisateur d’entrer le code PIN et je souhaite afficher mon clavier NIP personnalisé. Testé avec minSdk = 8 et maxSdk = 23 sur Android Studio 2.1

entrer la description de l'image ici

Vous pouvez utiliser le code suivant pour désactiver le clavier OnScreen.

 InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(editText.getWindowToken(), 0); 

Deux solutions simples:

La première solution est ajoutée sous la ligne de code dans le fichier XML manifeste. Dans le fichier manifeste (AndroidManifest.xml), ajoutez l’atsortingbut suivant dans la construction d’activité

android: windowSoftInputMode = “stateHidden”

Exemple:

  

Deuxième solution ajoute la ligne de code en activité

 //Block auto opening keyboard this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

Nous pouvons utiliser n’importe quelle solution de ce qui précède. Merci

Déclarez la variable globale pour InputMethodManager:

  private InputMethodManager im ; 

Sous onCreate () définissez-le:

  im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(youredittext.getWindowToken(), 0); 

Définissez le onClickListener sur ce texte d’édition dans oncreate ():

  youredittext.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { im.showSoftInput(youredittext, InputMethodManager.SHOW_IMPLICIT); } }); 

Cela fonctionnera.

Utilisez le code suivant, écrivez-le sous onCreate()

 InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 

essayez-le ……. je résous ce problème en utilisant le code: –

 EditText inputArea; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inputArea = (EditText) findViewById(R.id.inputArea); //This line is you answer.Its unable your click ability in this Edit Text //just write inputArea.setInputType(0); } 

rien ne peut être saisi par défaut sur une calculasortingce, mais vous pouvez définir n’importe quelle chaîne.

l’essayer

Essayez avec ceci:

 EditText yourEditText= (EditText) findViewById(R.id.yourEditText); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 

Pour fermer, vous pouvez utiliser:

 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0); 

Essayez comme ceci dans votre code:

 ed = (EditText)findViewById(R.id.editText1); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(ed.getWindowToken(), 0); ed.setOnClickListener(new OnClickListener() { public void onClick(View v) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(ed, InputMethodManager.SHOW_IMPLICIT); } }); 

Utilisez le code suivant dans votre onCreate()

  editText = (EditText) findViewById(R.id.editText); editText.requestFocus(); editText.postDelayed(new Runnable() { public void run() { InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.hideSoftInputFromWindow( editText.getWindowToken(), 0); } }, 200); 

La seule chose que vous devez faire est d’append android:focusableInTouchMode="false" à EditText au format XML et c’est tout (si quelqu’un doit encore savoir comment le faire facilement)

Pour les utilisateurs de Xamarin:

 [Activity(MainLauncher = true, ScreenOrientation = ScreenOrientation.Portrait, WindowSoftInputMode = SoftInput.StateHidden)] //SoftInput.StateHidden - disables keyboard autopop 

Eh bien, j’ai eu le même problème et je me suis attaqué au focusable dans le fichier XML.

  

Vous recherchez probablement aussi la sécurité. Cela aidera aussi à cela.

Si vous utilisez Xamarin, vous pouvez l’append

 Activity[(WindowSoftInputMode = SoftInput.StateAlwaysHidden)] 

Par la suite, vous pouvez append cette ligne dans la méthode OnCreate ()

 youredittext.ShowSoftInputOnFocus = false; 

Si le périphérique ciblé ne prend pas en charge le code ci-dessus, vous pouvez utiliser le code ci-dessous dans EditText click event

 InputMethodManager Imm = (InputMethodManager)this.GetSystemService(Context.InputMethodService); Imm.HideSoftInputFromWindow(youredittext.WindowToken, HideSoftInputFlags.None); 

J’ai trouvé le modèle suivant qui fonctionne bien pour moi dans le code où je veux afficher une boîte de dialog pour obtenir l’entrée (par exemple, la chaîne affichée dans le champ de texte est le résultat de sélections faites à partir d’une liste de cases dans une boîte de dialog plutôt que texte saisi via le clavier).

  1. Désactiver la mise au point sur le champ de saisie. Je ne peux pas désactiver pour l’activité entière, car il y a des champs d’édition pour lesquels je veux que le clavier soit utilisé dans la même disposition.
  2. Les clics initiaux dans le champ de texte génèrent un changement de focus, un clic répété génère un événement de clic. Donc, je remplace les deux (ici, je ne refactore pas le code pour illustrer que les deux gestionnaires font la même chose):

     tx = (TextView) m_activity.findViewById(R.id.allergymeds); if (tx != null) { tx.setShowSoftInputOnFocus(false); tx.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean hasFocus) { if (hasFocus) { MedicationsListDialogFragment mld = new MedicationsListDialogFragment(); mld.setPatientId(m_sess.getActivePatientId()); mld.show(getFragmentManager(), "Allergy Medications Dialog"); } } }); tx.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { MedicationsListDialogFragment mld = new MedicationsListDialogFragment(); mld.setPatientId(m_sess.getActivePatientId()); mld.show(getFragmentManager(), "Allergy Medications Dialog"); } }); } 

Dans une application Android que je construisais, j’avais trois EditText dans un LinearLayout disposés horizontalement. Je devais empêcher le clavier logiciel d’apparaître lorsque le fragment était chargé. En plus de mettre focusable et focusableInTouchMode à true sur LinearLayout , j’ai dû définir la descendantFocusability sur blocksDescendants . Dans onCreate , j’ai appelé requestFocus sur LinearLayout . Cela a empêché le clavier d’apparaître lorsque le fragment est créé.

Disposition –

     

Dans onCreatemTextSelectorContainer.requestFocus();

Utilisez This pour activer et désactiver EditText ….

 InputMethodManager imm; imm = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); if (isETEnable == true) { imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); ivWalllet.setImageResource(R.drawable.checkbox_yes); etWalletAmount.setEnabled(true); etWalletAmount.requestFocus(); isETEnable = false; } else { imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0); ivWalllet.setImageResource(R.drawable.checkbox_unchecked); etWalletAmount.setEnabled(false); isETEnable = true; } 

Essayez cette réponse,

 editText.setRawInputType(InputType.TYPE_CLASS_TEXT); editText.setTextIsSelectable(true); 

Remarque: uniquement pour API 11+

 private InputMethodManager imm; ... editText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.onTouchEvent(event); hideDefaultKeyboard(v); return true; } }); private void hideDefaultKeyboard(View et) { getMethodManager().hideSoftInputFromWindow(et.getWindowToken(), 0); } private InputMethodManager getMethodManager() { if (this.imm == null) { this.imm = (InputMethodManager) getContext().getSystemService(android.content.Context.INPUT_METHOD_SERVICE); } return this.imm; } 
      

Merci @AB pour une bonne solution

  android:focusableInTouchMode="false" 

Dans ce cas, si vous désactivez le clavier dans l’édition de texte, ajoutez simplement android: focusableInTouchMode = “false” dans le slogan edittext.

travailler pour moi dans Android Studio 3.0.1 minsdk 16, maxsdk26

Simple, Just Remove “” tag du fichier xml

pour toute textview à votre activité (ou créer de faux textfiew vide avec Android: layout_width = “0dp” android: layout_height = “0dp”) et append pour cette textview suivant: android: textIsSelectable = “true”

Si quelqu’un recherche encore la solution la plus simple, définissez l’atsortingbut suivant sur true dans la mise en page parente

 android:focusableInTouchMode="true" 

Exemple:

  ....... ......