Cómo hacer que EditText no se enfoque al crear la actividad

Antes de downvote y marca como duplicado, lea mi pregunta.

He leído las otras preguntas discutiendo esto, y todas ellas trabajan para mis diseños, excepto para el primero creado.

Por el momento, esto está en la parte superior de mi método onCreate :

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

^ Eso lo hace tan por lo menos el teclado no aparece en el arranque, pero el EditText todavía se centra en.

Este es el XML para mi EditText :

 <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" > </EditText> 

Esto es lo que parece cuando abro mi actividad:

Introduzca aquí la descripción de la imagen

El problema es que con algunos teléfonos, cuando un EditText está enfocado de esta manera, no pueden escribir en él. Quiero que no se enfoque.

Lo que he hecho funciona para los próximos diseños planteados en que los EditTexts no se centran en y se vería más como este:

Introduzca aquí la descripción de la imagen

Tenga en cuenta que es el mismo diseño, sin embargo. Esta es la pantalla después de que el usuario ha vuelto a esta pantalla, lo que no indicaría nada malo con el XML porque este es el mismo XML , pero el problema es que el EditText sólo se centra en cuando se crea la actividad.

He hecho la investigación y todas las otras preguntas no me ayudan con esto (sin embargo ayudaron a que el teclado no aparezca, afortunadamente). ¿Cómo puedo hacer que el EditText en el inicio se verá como la segunda captura de pantalla, en lugar de la primera?

Puedes establecer la propiedad de Layout como android:descendantFocusability="beforeDescendants" and android:focusableInTouchMode="true"

Ejemplo:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainLayout" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true" > <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" > </EditText> </RelativeLayout> 

Que este útil;)

Código XML:

 <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:focusable="false" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" > </EditText> 

Código Java:

 EditText edPwd = (EditText)findViewById(R.id.password); edtPwd.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.setFocusable(true); v.setFocusableInTouchMode(true); return false; } }); 

Establece focusable false en xml y establece true a través del código

En su main_layout añadir este 2 líneas:

 android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true" 

ejemplo:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"> *YOUR LAYOUT CODE* </RelativeLayout> 

Puede hacerlo mediante programación. editText.setEnabled(false) en su método onStart() de su actividad (no en onCreate () – porque este es un método para inicializar componentes GUI)

Código XML

 <EditText android:imeOptions="flagNoExtractUi" android:focusable="false" /> 

Código Java en onClickListerner

  mEdtEnterPhoneNumber.setFocusable(true); mEdtEnterPhoneNumber.setFocusableInTouchMode(true); 

Es posible usar android:focusable="false" para desactivarlo, pero si eso no funciona por alguna razón, entonces simplemente puede poner un LinearLayout y tomará el foco sin interrumpir su diseño.

NOTA: Eclipse le dará un error diciendo que su LinearLayout es inútil porque no tiene contenido. Usted debe ser capaz de ignorarlo sin problemas.

Por ejemplo:

 <LinearLayout android:focusable="true" android:focusableInTouchMode="false" android:layout_width="0dp" android:layout_height="0dp" /> <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" > </EditText> </LinearLayout> 

Añadir esto en onCreate ()

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

O en onCreateView ()

  getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

La mejor solución está aquí: https://stackoverflow.com/a/45139132/3172843

La solución correcta y simple es setFocusable false y setFocusableInTouchMode true . Por lo que el enfoque de edición de texto sólo cuando toque el usuario que EditText

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

android:focusable="false" para deshabilitar el enfoque

 <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/changePass" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" android:ems="10" android:imeOptions="flagNoExtractUi" android:inputType="textPassword" android:maxLength="30" android:focusable="false" > </EditText> 
  • Aplicación de Android, El marcado en el documento que sigue al elemento raíz debe estar bien formado
  • Pestaña de Logcat en Eclipse DDMS Persepctive (complemento ADT de Android) no aparece en blanco
  • ¿Cómo obtengo una variable de un bloque try / catch?
  • Android / SQLite / Múltiples tablas
  • Cómo analizar una clave JSON dinámica en un resultado anidado JSON?
  • ¿Cómo puedo crear y editar un archivo de hoja de cálculo en una unidad de Google con las API de Google Drive solo desde mi aplicación para Android?
  • Clasificación en el campo numérico db4o Android
  • Convierta un sitio web con un diseño de respuesta a la aplicación de Android
  • Error de la cámara 1001
  • Actualizaciones de miembros extranjeros de ORMLite
  • Falso error positivo de permiso de pelusa incluso después de pedir permiso en tiempo de ejecución
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.