Aparición automática de teclado en el inicio Actividad

Tengo una pregunta relativamente simple. Tengo una actividad con un montón de EditText en ellos. Cuando abro la actividad se enfoca automáticamente al primer EditText y muestra el teclado virtual.

¿Cómo puedo evitar esto?

Utilice estos atributos en su etiqueta de diseño en el archivo XML:

android:focusable="true" android:focusableInTouchMode="true" 

Como se informó por otros miembros en los comentarios que no funciona en ScrollView por lo tanto, es necesario agregar estos atributos al hijo principal de ScrollView .

Puedes agregar esto a tu actividad de Manifiesto de Android:

 android:windowSoftInputMode="stateHidden|adjustResize" 

Tengo varias implementaciones descritas aquí, pero ahora he añadido en AndroidManifest.xml para mi Activity la propiedad:

 android:windowSoftInputMode="stateAlwaysHidden" 

Creo que esta es la manera fácil incluso si usted está utilizando fragments .

" StateAlwaysHidden " El teclado virtual siempre está oculto cuando la ventana principal de la actividad tiene enfoque de entrada.

Si tiene otra vista sobre su actividad como un ListView , también puede hacer lo siguiente:

 ListView.requestFocus(); 

En su onResume () para tomar el foco del editText .

Sé que esta pregunta ha sido contestada, pero sólo proporcionando una solución alternativa que funcionó para mí 🙂

https://stackoverflow.com/a/11627976/5217837 Esto es casi correcto:

 @Override public void onCreate(Bundle savedInstanceState) { getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } 

Pero debe ser SOFT_INPUT_STATE_HIDDEN en lugar de SOFT_INPUT_STATE_ALWAYS_VISIBLE

Utilícelo en el código de su actividad:

 @Override public void onCreate(Bundle savedInstanceState) { getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } 

Tuve un problema simular, incluso al cambiar las pestañas el teclado apareció automáticamente y se quedó con Android 3.2.1 en un Tablet. Utilice el siguiente método:

 public void setEditTextFocus(EditText searchEditText, boolean isFocused) { searchEditText.setCursorVisible(isFocused); searchEditText.setFocusable(isFocused); searchEditText.setFocusableInTouchMode(isFocused); if (isFocused) { searchEditText.requestFocus(); } else { InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(searchEditText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS ); } } 

En el onCreate () y en la onPause () de la actividad para cada EditText:

SetEditTextFocus (myEditText, false);

Para cada EditText un OnTouchListener:

  myEditText.setOnTouchListener(new EditText.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { setEditTextFocus(myEditText, true); return false; } }); 

Para cada EditText en el OnEditorActionListener :

  myEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() { @Override public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { ....... setEditTextFocus(myEditText, false); return false; } }); 

Y para cada EditText en la layout xml :

  android:imeOptions="actionDone" android:inputType="numberDecimal|numberSigned" // Or something else 

Probablemente haya más optimización de código posible.

He encontrado esta solución simple que trabajó para mí. Establezca estos atributos en su disposición del padre:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainLayout" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true" > 

Y ahora, cuando se inicia la actividad, este diseño principal obtendrá el foco de forma predeterminada.

Además, podemos eliminar el enfoque de las vistas secundarias en tiempo de ejecución, dando el enfoque a la disposición principal de nuevo, como esto:

 findViewById(R.id.mainLayout).requestFocus(); 

Espero que funcione para usted.

Esta es la solución que estoy usando, no es la mejor solución, pero funciona bien para mí

  editComment.setFocusableInTouchMode(false); editComment.setOnTouchListener(new OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub editComment.setFocusableInTouchMode(true); editComment.requestFocus() ; return false; }}); 

Curiosamente, esta documentación https://developer.android.com/training/keyboard-input/visibility.html indica que cuando se inicia una actividad y se da prioridad a un campo de texto, no se muestra el teclado virtual (y luego se pasa a Mostrarle cómo hacer que el teclado se muestre si lo desea con algún código).

En mi Samsung Galaxy S5, así es como funciona mi aplicación (sin entrada de manifiesto o código específico) – no hay teclado suave. Sin embargo, en un Lollipop AVD, un teclado suave se muestra – contraviene el documento dado anteriormente.

Si obtiene este comportamiento al realizar pruebas en un AVD, es posible que desee probar en un dispositivo real para ver qué sucede.

 ((InputMethodManager)getActivity().getSystemService("input_method")).hideSoftInputFromWindow(this.edittxt.getWindowToken(), 0); 

Esto tiene algunas buenas respuestas en la siguiente publicación: Detener EditText de ganar foco en inicio de actividad . El que uso regularmente es el siguiente código de Morgan :

 <!-- Dummy item to prevent AutoCompleteTextView from receiving focus --> <LinearLayout android:focusable="true" android:focusableInTouchMode="true" android:layout_width="0px" android:layout_height="0px"/> <!-- :nextFocusUp and :nextFocusLeft have been set to the id of this component to prevent the dummy from receiving focus again --> <AutoCompleteTextView android:id="@+id/autotext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:nextFocusUp="@id/autotext" android:nextFocusLeft="@id/autotext"/> 

NOTA: El elemento ficticio tiene que ser colocado A LA DERECHA ANTES del elemento que se puede enfocar.

Y creo que debería funcionar perfectamente incluso con ScrollView y no ha tenido ningún problema con la accesibilidad para esto.

Esto ocurre cuando su EditText obtiene automáticamente el enfoque como cuando se inicia la actividad. Así que una manera fácil y estable de arreglar esto, es simplemente para establecer el enfoque inicial a cualquier otra vista, como un botón, etc

Usted puede hacer esto en su XML de la disposición, ningún código requerido.

Respuesta aceptada no está funcionando para mí, por eso dar respuesta solución de trabajo, puede ser que sea útil!

 EditText edt = (EditText) findViewById(R.id.edt); edt.requestFocus(); edt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0)); edt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0)); 

Ahora el teclado está abierto disfrutar 🙂

Si la vista tiene EditText y Listview, el teclado se abrirá de forma predeterminada. Para ocultar el teclado de aparecer por defecto, haga lo siguiente

 this.listView.requestFocus(); 

Asegúrese de que está solicitando enfocarse en listview después de obtener la vista para editText.

Por ejemplo

 this.listView = (ListView) this.findViewById(R.id.list); this.editTextSearch = (EditText) this.findViewById(R.id.editTextSearch); this.listView.requestFocus(); 

Si lo hace, entonces editText obtendrá el enfoque y el teclado aparecerá.

  • Accesos directos de teclado personalizados
  • Ocultar el teclado en fragmento en el exterior haga clic
  • Establece el tipo de entrada numérica en SearchView en ActionBar
  • Cómo ocultar el teclado en phonegap android
  • ¿Cómo se muestra el teclado numérico en un EditText en android?
  • Teclado personalizado es ocultar el cuadro Editar en Android
  • Deshabilitar teclado en EditText
  • El teclado suave de Android oculta el botón
  • El teclado suave de Android se esconderá sin motivo
  • Problema de enfoque de teclado Android personalizado
  • NumberPicker en AlertDialog siempre activa el teclado. ¿Cómo desactivar esto?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.