2015-12-22 6 views
6

Ich baue eine Chat-App und präsentiere Nachrichten mit RecyclerView. Da dies eine Chat-App ist, sollten die letzten Nachrichten am Ende der Liste erscheinen. Um dies zu erreichen verwende ich LinearManager auf folgende Weise:RecyclerView für Chat-App

LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); 
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    layoutManager.setStackFromEnd(true); 
    layoutManager.setSmoothScrollbarEnabled(false); 

Und es funktioniert gut, wenn es viele Nachrichten im Gespräch sind. Wenn jedoch nur ein oder zwei Nachrichten zwischen den Benutzern vorhanden sind, zeigt RecyclerView diese am unteren Bildschirmrand an und setzt Leerraum darüber.

Ist es in diesem Fall möglich, Recycler-Artikel oben auf dem Bildschirm anzuzeigen?

Antwort

3

Ich schaffe alles normal und hinzugefügt setStackFromEnd(true), setReverseLayout(true), und diese Methode verwenden, unten Liste auf den Boden zu setzen, wenn es viele itens haben, wird die recyclerview von unten beginnen, sonst wird es aways zeigen Kommentare von oben, auch wenn es hat weniger itens dann die Größe des Bildschirms.

//method will set the recyclerview to the end, in other words its going to the 
//end of the recyclerview, starting from the bottom. 
//call scrollToBottom() after add your items in the adapter 
public void scrollToBottom(){ 
    recyclerView.scrollVerticallyTo(0); 
} 

RecyclerView Java

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.activity_comments_recycler_view); 
LinearLayoutManager manager = LinearLayoutManager(this); 
manager.setStackFromEnd(true);   
manager.setReverseLayout(true);   
recyclerView.setLayoutManager(manager); 

RecyclerView XML

<RecyclerView 
    android:id="@+id/activity_comments_recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

enter image description here