2011-02-10 19 views
8

Tengo un ListView con un EditText en cada fila. Establecí windowSoftInputMode en adjustPan en el manifiesto para esta actividad, por lo que cuando toco en un EditText, el diseño se desplaza para que esté visible sobre el teclado.EditText en ListView con windowSoftInputMode adjustPan

Esto funciona la primera vez que toco un EditText. Pero si presiona el botón Atrás para cerrar el teclado, vuelva a presionar el mismo Editar Texto (sin tocar nada, para que el cursor permanezca en el primer EditText), el teclado volverá a aparecer pero el diseño no se moverá esta vez. El resultado de esto es que EditText está oscurecido detrás del teclado.

¿Alguien ha experimentado este comportamiento/sabe cómo solucionarlo?

Gracias

+0

me parece un error. – Dori

Respuesta

8

Aún no sabe por qué sucede esto, pero tengo una solución.

He subclase EditText y se reemplaza el método onKeyPreIme(int keyCode, KeyEvent event) de la siguiente manera:

@Override 
public boolean onKeyPreIme(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     clearFocus(); 
    } 
    return super.onKeyPreIme(keyCode, event); 
} 

Ahora, cuando se pulsa la tecla de retroceso, la EditText abandona el enfoque. Luego, tocarlo nuevamente tiene el comportamiento deseado.

+0

Gracias Matt ... Me alegro de que no soy el único que nota todas estas anomalías en Android. Aún joven, aunque ... API en el futuro se tambaleará. Cuando tengas algo de tiempo, echa un vistazo a este otro error que recogí: http://stackoverflow.com/questions/15267137/android-adjustpan-not-working-after-edittext-container-has-been-translated Muchas gracias – Houston

+0

Buen hack. Muchas gracias :) –

Cuestiones relacionadas