2015-06-04 18 views
5

Aby włączyć czat w stylu przewijanie w widoku listy, możemy użyć następujących właściwościach:Konfiguracja RecyclerView pracować jako czat

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    .... 
    android:stackFromBottom="true" 
    android:transcriptMode="normal" /> 

Jest to prosty i skuteczny sposób, aby stworzyć czat. Jak możemy zrobić to samo z widokiem recyklera? Nie znalazłem żadnego prostego rozwiązania.

Pozdrawiam,

+0

można spróbować moją odpowiedź: http://stackoverflow.com/a/43647835/6482350 – DysaniazzZ

Odpowiedz

12

RecyclerView posiada atrybut stackFromEnd.

<android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/recyclerView" 
     android.support.v7.recyclerview:stackFromEnd ="true"/> 

Albo można to zrobić za pośrednictwem kodu

mLayoutManager = new LinearLayoutManager(getActivity()); 
mLayoutManager.setReverseLayout(true); 
mLayoutManager.setStackFromEnd(true); 
+0

Czy to działa na aplikacji? –

+0

Tak. Dzięki. To zadziałało. Jest to odpowiednik stackFromBottom. Ale która własność ma podobny efekt Androida: transkryptMode? Gwarantuje, że listview przewinie się tylko wtedy, gdy użytkownik patrzy na ostatni element zestawu danych. –

+0

Myślę, że podobny efekt do transkryptMode można osiągnąć za pomocą kodu przy użyciu 'setReverseLayout()'. Sprawdź moją edycję. –

1

dodać dwie linie do XML

app:stackFromEnd="true" 
app:reverseLayout="true" 
0

dodać te oświadczenia;

<android.support.v7.widget.RecyclerView 
        android:id="@+id/chat_list_view" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:drawSelectorOnTop="false" 
        android:listSelector="@android:color/transparent" 
        android:paddingLeft="4dp" 
        android:paddingRight="4dp" 
        android:scrollbarStyle="outsideOverlay" 
        android:transcriptMode="normal" /> 

i dodać do menedżera układu

layoutManager.setStackFromEnd(true);