2012-08-23 16 views
8

Meine ListView sollte automatisch bis zum Ende scrollen, wenn neue Nachricht empfangen oder gesendet. Aber wenn ich Android-Tastatur verwenden, um Nachricht von EditText unterhalb von ListView zu senden, ändert ListView Größe und neue Nachricht, die ich senden möchte, außerhalb des Bildschirms und ich muss nach unten scrollen, um es zu sehen, auch wenn Tastatur verschwindet und ListView die Größe erneut ändert.ListView scrollt nicht bis zum Ende, wenn die Tastatur mit

Listview blättern ich benutze:

listView.postDelayed(new Runnable() {
@Override public void run() { listView.setSelection(listView.getCount()); } }, 100);

aber nicht richtig in meinem Fall arbeiten.

Weiß jemand, warum es auftreten kann? Gibt es eine Möglichkeit, die ListView immer zu Ende zu blättern?

Danke, Ihre Hilfe wird sehr geschätzt!

+0

Wie haben Sie die Tastatur beim EditText angezeigt? –

Antwort

8

Sie können versuchen, diese Codezeile hinzuzufügen, nachdem Sie Ihre Auswahl auf Ihre Liste setzen:

listView.smoothScrollToPosition(listView.getCount()); 

Code Resultierende sollte wie folgt aussehen:

listView.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      listView.setSelection(listView.getCount()); 
      listView.smoothScrollToPosition(listView.getCount()); 
     } 
    }, 100); 
+1

Es funktioniert! Vielen Dank! –

1

Setzen Sie android: windowSoftInputMode im Manifest für die Aktivität zu adjustPan|adjustResize.

+2

Es funktioniert nicht. Ich möchte keine Aktivität reparieren, weil ich andere Elemente im Bildschirm habe, zum Beispiel das linke Feld. Dieses Problem betrifft nur ListView. Ich möchte Methode verwenden, die immer ListView zum Ende blättern. –

+0

Die Dokumente sagen ausdrücklich, dass dies nicht möglich ist - http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_RESIZE – Eliezer

16

Versuchen Sie, diese insead des Codes:

listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 

(oder nach XML-Layout festlegen).

Verwandte Themen