android listview focus android-edittext listactivity

android - Editar texto en ListActivity ListView pierde el foco cuando aparece el teclado



focus android-edittext (7)

He buscado y buscado una respuesta a esta pregunta y todo lo que parecía una respuesta no ha funcionado, así que supongo que solo lo haré.

Tengo un par de cuadros EditText agregados a un ListView que es la base de una ListActivity . Cuando configuro windowSoftInputMode para adjustPan y adjustPan clic en EditText , funciona hasta que vuelves a hacer clic y el teclado lo cubre. Cuando uso adjustResize funciona, excepto cuando aparece el teclado, EditText pierde el foco y tengo que EditText nuevo para escribir.

Estaba intentando descubrir cómo atrapar el onResize pero parece estar asociado con la Vista y no con la actividad, y no estoy seguro de cómo escucharla. También probé todo tipo de configuraciones EditText en los cuadros EditText y el ListView sí (como se sugiere en otras publicaciones que he leído) que tampoco parecen ser de ayuda.


En mi caso, funcionó perfectamente añadiendo esto como código para manifestar:

android:windowSoftInputMode="adjustPan"


Has probado después de adjustResize asegurándote de restablecer el foco a EditText haciendo algo como EditText.requestFocus(); para que tenga foco de nuevo y el usuario no tenga que volver a tocarlo. puede usar EditText.isFocused() para ver si está enfocado (verdadero) o no (falso) en una declaración de registro de depuración o algo así.

es posible que necesite configurar el campo para que también se SetFocusable() usando SetFocusable() pero tenga cuidado ya que esto podría quitarle el foco del ListView y evitar que pueda desplazarse o seleccionar cosas más tarde, así tendrá que jugar con la configuración enfocable y enfocada.


He experimentado exactamente el mismo problema en mi proyecto.

Para resolver el problema, he subclasificado el EditText y EditText manejado el botón "Atrás", presione - para asegurarme de que EditText borra el foco en ese momento.

Verifique esta solución , sobre cómo hacerlo.

Buena suerte.


Para mí, una combinación de los siguientes me ayudó (especialmente el número 3):

1) Agregue lo siguiente a la Actividad relacionada en el archivo de manifiesto, esto es necesario para que su Vista de lista se modifique para llenar solo el área sobre el teclado de pantalla:

android:windowSoftInputMode="adjustResize"

2) Con lo siguiente, el ListView SOLO obtendrá el foco si ninguno de sus descendientes lo quiere. Los descendientes (EditText) deben obtener y mantener el foco.

<ListView ... android:descendantFocusability="afterDescendants"/>

3) La presentación / ocultación automática de la barra Sugerencias de ortografía justo encima del teclado sigue activando el ListView para actualizar. Desactivé las sugerencias para cualquier texto de edición en mi ListView.

<EditText ... android:inputType="textNoSuggestions|textVisiblePassword" />


Todo lo que necesitas hacer es aplicar esto a tu ListView:

XML:

android:descendantFocusability="afterDescendants"

Java:

listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);


la vista de reciclado funciona mejor y no hay necesidad de perder el tiempo con otras propiedades en cualquier lugar.


mViewHolder.editText = (EditText)convertView.findViewById(R.id.editText1); mViewHolder.editText.setTag(position); mViewHolder.editText.setTextColor(0xFF000000); mViewHolder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { EditText et =(EditText)v.findViewById(R.id.editText1); editTextArrayList.set(position,et.getText().toString().trim()); } } });

El siguiente enlace puede ayudarte http://mylearnandroid.blogspot.in/2014/06/listview-problem-while-scrolling.html