2015-12-16 20 views
11

próbuję pokazać poziomych i pionowych elementów recyclerview przedmioty recyclerview wewnątrz ScrollviewJak korzystać Recyclerview wewnątrz Scrollview

Scrollview nie działać, nawet jeśli używam androida: fillViewport = "true"

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
    //Horizontal Recyclerview items 
    <RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </RecyclerView> 
    //vertical Recyclerview items 
     <RecyclerView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"></RecyclerView> 
    </LinearLayout> 

</ScrollView> 
+1

Układ można uprościć. ParentView to 'RecyclerView' (pionowe elementy), a pozycja w indeksie 0 to kolejny" RecyclerView "(poziome elementy). –

+0

powinieneś użyć jednego dziecka z przewijaniem, a inne widoki twojego xml będą w tym dziecku. dla recyclerView do pracy z scrollview, musisz podać 0dp wysokość do recyclerview w xml i zapewnić maksymalną wysokość, którą twój recyclerview's może wziąć w runtime. Możesz obliczyć maksymalną wysokość, mnożąc całkowitą liczbę wierszy * wysokość jednego wiersza (w dp) w przypadku pionowego recyklera, aw poziomie można podać tylko wysokość jednego dziecka. Na przykład, jeśli mamy 10 widoków tekstowych po 40pp każdy, wtedy wysokość pionowej recyclerView będzie wynosić 10 * 40 dp = 400dp, a 10pp dla poziomej. –

+0

możesz to zrobić ...spójrz tutaj: [link] (http://stackoverflow.com/a/36979664/4240256) –

Odpowiedz

2

ScrollView może mieć tylko jedno dziecko.
Usuń swoją RelativeLayout i spróbuj ponownie.

Oprócz tego android:layout_height w ScrollView powinien być ustawiony na wrap_content

Dodatkowo nie jestem pewny, czy to działa, ponieważ w Docs jest powiedziane, że

Nigdy nie należy używać ScrollView z ListView, ponieważ ListView dba o swoje pionowe przewijanie. Co najważniejsze, czyniąc to, pokonuje wszystkie ważne optymalizacje w ListView do radzenia sobie z dużymi listami, ponieważ skutecznie zmusza ListView do wyświetlenia całej listy elementów, aby wypełnić nieskończony kontener dostarczony przez ScrollView.

Może NestedScrollView prace, ponieważ jest to dla

NestedScrollView jest jak Scrollview, ale obsługuje działając zarówno jako zagnieżdżonego przewijania rodzic i dziecko na nowych i starych wersjach Androida. Zagnieżdżone przewijanie jest domyślnie włączone.

10

Zamiast tego należy użyć NestedScrollView. Jednak może być konieczne napisanie własnego menedżera LayoutManager. Sprawdź tę SO Answer więcej szczegółów

+0

dzięki za odpowiedź, ale to rozwiązanie jest błędne – iCoder

4
  1. Trzeba użyć niestandardowego menedżera układu użyć recyclerview wewnątrz Scrollview.

  2. Możesz usunąć przewijanie i utworzyć element nagłówka w pionowym widoku recyclerview, który zawiera horyzontalny widok recyklingu.

Również nie powinieneś używać widoku recycler wewnątrz przewijania. Pomyśl więc, że drugie podejście będzie lepsze.

Możesz także użyć Snap-RecyclerView-Utils. Zawiera menedżer układu liniowego do przeglądania w widoku przewijania wewnątrz widoku przewijania oraz adapter, który może pomóc w utworzeniu nagłówka zawierającego poziomy widok recyklingu.

Powiązane problemy