8 Stimmen

EditText in ListView mit windowSoftInputMode adjustPan

Ich habe eine ListView mit einer EditText in jeder Reihe. Ich habe eingestellt windowSoftInputMode a adjustPan im Manifest für diese Aktivität, so dass ich beim Tippen auf eine EditText schwenkt das Layout so, dass es über der Tastatur sichtbar ist.

Das funktioniert, wenn ich das erste Mal auf eine EditText . Wenn ich jedoch die Taste "Zurück" drücke, um die Tastatur zu schließen, und dann erneut auf denselben EditText tippe (ohne auf etwas anderes zu tippen, so dass der Cursor im ersten EditText ), wird die Tastatur wieder angezeigt, aber das Layout ändert sich diesmal nicht. Dies hat zur Folge, dass die EditText ist hinter der Tastatur verborgen.

Hat jemand Erfahrung mit diesem Verhalten / weiß, wie man es lösen kann?

Danke

8voto

Matt Colliss Punkte 1394

Ich weiß immer noch nicht, warum das passiert, aber ich habe eine Lösung.

Ich habe die Unterklasse EditText und überschrieben die Methode onKeyPreIme(int keyCode, KeyEvent event) wie folgt:

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

Wenn nun die Zurück-Taste gedrückt wird, wird die EditText gibt den Fokus auf. Ein erneutes Antippen bewirkt dann das gewünschte Verhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X