2016-03-01 23 views
33

Po aktualizacji do v23.2.0 w moim RecyclerView mam przedmioty o ogromnej pustej przestrzeni pionowej, między przedmiotami.Recycler Wyświetl elementy o dużej pustej przestrzeni po 23.2.0

Moja pozycja układ jest bardzo prosty:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"          
     android:orientation="vertical" > 
+0

Nadal ten błąd występuje w 23.4.0, gdzie mam nestedScrollView {recyclerview. items()} po usunięciu kilku z nich oznacza, że ​​sortowanie pozostawia pustą przestrzeń niestety ... –

+0

To nie jest błąd, oczekiwane zachowanie. Podobne pytania [tutaj] (http://stackoverflow.com/q/35677694/1009132), [tutaj] (http://stackoverflow.com/q/35747268/1009132) i [tutaj] (http: // stackoverflow. com/q/37504796/1009132) – albodelu

Odpowiedz

106

Według doc

Wraz z wydaniem 23.2.0 tam to nowa funkcja API LayoutManager: auto- pomiar!
Umożliwia to zmienianie rozmiaru w oparciu o rozmiar jego zawartości. Oznacza to, że możliwe są już wcześniej niedostępne scenariusze, takie jak użycie WRAP_CONTENT dla wymiaru widoku RecyclerView.
Wszystkie wbudowane menedżery LayoutManager obsługują teraz automatyczny pomiar.

W związku z tą zmianą, upewnij się, aby dokładnie sprawdzić parametry układu swoich poglądów produktu: wcześniej ignorowane Parametry układu (takich jak MATCH_PARENT w kierunku przewijania) będą być teraz w pełni respektowane .

W układzie poz trzeba zmienić:

android:layout_height="match_parent" 

z

android:layout_height="wrap_content" 
+2

Świetnie! Nie miałem pojęcia, co to było ... –

+0

@GabrielMorenoIbarra Dzięki człowiekowi uratowałeś mi życie –

+2

Dziękuję mojemu przyjacielowi za uratowanie mnie przed wieczorem frustracji z powodu nieoczekiwanego i sprzecznego z intuicją zachowania. Brawo. –

13

Musisz zrobić Recyclerview i wysokość układu poz owinąć treści.

3

To jest praca dla mnie.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<android.support.v7.widget.CardView 
    android:layout_width="fill_parent" 
    android:layout_height="100dp" 
    android:elevation="7dp" 
    app:cardCornerRadius="7dp" 
    app:cardMaxElevation="7dp" 
    app:contentPadding="7dp" 
    android:layout_margin="5dp" 
    > 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/tv_allfeedbacks_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5dp" 
     android:layout_marginLeft="5dp" 
     android:textSize="14dp" 
     android:textStyle="bold" 
     /> 
    <TextView 
     android:id="@+id/tv_allfeedback_date" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="5dp" 
     /> 
    <TextView 
     android:id="@+id/tv_allfeedbacks_comment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tv_allfeedbacks_title" 
     android:layout_marginTop="5dp" 
     android:layout_marginLeft="5dp" 
     /> 
     <TextView 
      android:id="@+id/tv_allfeedbacks_username" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_margin="5dp" 
      /> 
     <RatingBar 
      android:id="@+id/ratingbar_allfeedbacks" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true" 
      android:numStars="5" 
      android:layout_margin="5dp" 
      style="?attr/ratingBarStyleSmall" 
      /> 
     </RelativeLayout> 

</android.support.v7.widget.CardView> 

2

W moim przypadku, ja zrobiłem nowe zmiany wrap_content ale nie było jeszcze luka, która objawia się podczas onMove lub onSwipe. Rozwiązałem to, dodając ten kod:

mRecyclerView.getLayoutManager().setMeasurementCacheEnabled(false);