2016-05-15 3 views
0

Ich arbeite an einer Messaging-App, nichts Besonderes über das Layout - eine Toolbar an der Spitze des Layouts, eine EditText an der Unterseite und ein RecyclerView für die Liste der Nachrichten, füllen Sie den Zwischenraum dazwischen.Scrollen Sie Elemente in RecyclerView, so dass letzte Element immer gleich ist, wenn die Tastatur angezeigt wird

Mein Problem ist, dass die Position des letzten sichtbaren Punkt im RecyclerView nicht beibehalten wird, wenn die Soft-Tastatur, indem Sie auf/Drücken der EditText gezeigt. dh wenn die Liste 20 Elemente hat und das letzte sichtbar ist, wenn die Soft-Tastatur nicht angezeigt wird, ist Punkt 12, wenn die Soft-Tastatur angezeigt wird, würde ich immer noch das letzte sichtbare Element 12 sein.

Ich habe schon versucht a Kombination von adjustPan und adjustResize im Manifest und Code aber löst das Problem nicht.

Irgendwelche Ideen?

Antwort

0

Ich denke, Ihre beste Wette adjustResize im Manifest zu setzen, ist dann eine benutzerdefinierte RecyclerView Unterklasse erstellen, die onLayout() überschreibt:

@Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 

     super.onLayout(changed, l, t, r, b); 

     int height = b - t; 
     if (height != mLastHeight) { 
      int last = getAdapter.getItemCount() - 1; 
      scrollToPosition(last); 
     } 
     mLastHeight = height; 
    } 
+0

Danke für die Anregung. Dies scrollt im Wesentlichen zu dem letzten Element in der Liste, was nicht das ist, was ich tun möchte. Ich habe die Frage aktualisiert, um mehr Klarheit zu geben. –

Verwandte Themen