¿Cómo desactivar el teclado emergente cuando está en edittext?

En mi aplicación, la primera vista de todas mis pantallas es EditText, de modo que cada vez que voy a una pantalla aparece el teclado en pantalla. ¿Cómo puedo desactivar esta ventana emergente y habilitarla cuando hago clic manualmente en 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); } } }); 

código xml:

  

la tercera vista (EditText) es donde está el foco.

La mejor solución se encuentra en el archivo de manifiesto de proyecto (AndroidManifest.xml) , agregue el siguiente atributo en la construcción de activity

android: windowSoftInputMode = “stateHidden”


Ejemplo:

   

Descripción:

  • El estado del teclado virtual, ya sea oculto o visible, cuando la actividad se convierte en el foco de atención del usuario.
  • El ajuste realizado en la ventana principal de la actividad: si se redimensiona más pequeño para dejar espacio para el teclado virtual o si su contenido se desplaza para hacer visible el foco actual cuando parte de la ventana está cubierta por el teclado virtual.

Introducido en:

  • API Nivel 3.

Enlace a los Documentos

Nota: Los valores establecidos aquí (que no sean “stateUnspecified” y “adjustUnspecified”) anulan los valores establecidos en el tema.

Tienes que crear una vista, encima de EditText, que tenga un enfoque ‘falso’:

Algo como :

     

En este caso, utilicé LinearLayout para solicitar el enfoque. Espero que esto ayude.

Esto funcionó perfectamente … gracias a Zaggo0

  edittext.setShowSoftInputOnFocus(false); 

Ahora puede usar cualquier teclado personalizado que desee.

Agregue el código siguiente en su clase de actividad.

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

El teclado emergerá cuando el usuario haga clic en EditText

La gente ha sugerido muchas soluciones excelentes aquí, pero utilicé esta técnica simple con EditText (no se requiere nada en Java y AnroidManifest.xml). Simplemente configure su InTouchMode enfocable y enfocable en false directamente en EditText.

   

Mi intención aquí es usar este cuadro de edición en la actividad de locking de aplicaciones donde le pido al usuario que ingrese el PIN y deseo mostrar mi PIN personalizado. Probado con minSdk = 8 y maxSdk = 23 en Android Studio 2.1

enter image description here

Puede usar el siguiente código para deshabilitar el teclado OnScreen.

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

Dos soluciones simples:

La primera solución se agrega debajo de la línea de código en el archivo xml de manifiesto. En el archivo Manifiesto (AndroidManifest.xml), agregue el siguiente atributo en la construcción de la actividad

android: windowSoftInputMode = “stateHidden”

Ejemplo:

  

Second Solution agrega una línea de código debajo de la actividad

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

Podemos usar cualquier solución de arriba. Gracias

Declare la variable global para InputMethodManager:

  private InputMethodManager im ; 

En onCreate () defínalo:

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

Establezca onClickListener en ese texto de edición dentro de oncreate ():

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

Esto funcionará

Use el siguiente código, escríbalo en 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); 

pruébalo ……. resuelvo este problema usando el código: –

 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); } 

nada puede ingresar por calculadora predeterminada en nada, pero puede establecer cualquier cadena.

intentalo

Prueba con esto:

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

Para cerrar, puede usar:

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

Pruébalo así en tu código:

 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); } }); 

Use el siguiente código en su 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); 

Lo único que tienes que hacer es agregar android:focusableInTouchMode="false" a EditText en xml y eso es todo. (Si alguien todavía necesita saber cómo hacerlo de la manera más fácil)

Para usuarios de Xamarin:

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

Bueno, tuve el mismo problema y acabo de abordar con el archivo XML que se puede enfocar.

  

Probablemente también estés buscando seguridad. Esto ayudará en eso también.

Si está usando Xamarin puede agregar esto

 Activity[(WindowSoftInputMode = SoftInput.StateAlwaysHidden)] 

a partir de entonces puede agregar esta línea en el método OnCreate ()

 youredittext.ShowSoftInputOnFocus = false; 

Si el dispositivo de destino no es compatible con el código anterior, puede utilizar el siguiente código en el evento Editar clic de texto

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

Encontré el siguiente patrón que funciona bien para mí en el código donde quiero mostrar un diálogo para obtener la entrada (por ejemplo, la cadena que se muestra en el campo de texto es el resultado de selecciones hechas de una lista de casillas de verificación en un diálogo, en lugar de texto ingresado a través del teclado).

  1. Desactive el foco de entrada suave en el campo de edición. No puedo deshabilitar toda la actividad, ya que hay campos de edición en los que quiero que se use el teclado en el mismo diseño.
  2. Los clics iniciales en el campo de texto producen un cambio de enfoque, un clic repetido produce un evento de clic. Así que anulo ambos (aquí no refactorizo ​​el código para ilustrar que ambos manejadores hacen lo mismo):

     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"); } }); } 

En una aplicación de Android que estaba construyendo, tenía tres EditText s en LinearLayout dispuestos horizontalmente. Tuve que evitar que el teclado suave apareciera cuando el fragmento se cargó. Además de establecer LinearLayout y LinearLayout en true en LinearLayout , tuve que configurar descendantFocusability para blocksDescendants . En onCreate , llamé a requestFocus en LinearLayout . Esto evitó que el teclado apareciera cuando se creó el fragmento.

Diseño –

     

En onCreatemTextSelectorContainer.requestFocus();

Use esto para habilitar y deshabilitar 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; } 

Prueba esta respuesta,

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

Nota: solo para 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; } 
      

Gracias @AB por una buena solución

  android:focusableInTouchMode="false" 

En este caso, si deshabilita el teclado en el texto de edición, simplemente agregue android: focusableInTouchMode = “false” en edittext tagline.

trabajo para mí en Android Studio 3.0.1 minsdk 16, maxsdk26

Simple, simplemente quite la etiqueta “” del archivo xml

para cualquier vista de texto en tu actividad (o crea una vista de texto vacía y falsa con android: layout_width = “0dp” android: layout_height = “0dp”) y agrega para esta vista de texto siguiente: android: textIsSelectable = “true”

Si alguien todavía está buscando la solución más fácil, configure el siguiente atributo como true en su diseño principal

 android:focusableInTouchMode="true" 

Ejemplo:

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