web-dev-qa-db-ja.com

23.2.0以降の大きな空きスペースがあるRecyclerViewアイテム

RecyclerViewv23.2.0に更新した後、アイテム間に大きな空の垂直スペースがあるアイテムがあります。

私のアイテムのレイアウトはとてもシンプルです:

 <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:layout_width="match_parent"
       Android:layout_height="match_parent"                                    
       Android:orientation="vertical" >
42

doc

リリース23.2.0では、LayoutManager APIにエキサイティングな新機能があります:auto-measurement
これにより、RecyclerViewがコンテンツのサイズに基づいて自身のサイズを変更できます。これは、RecyclerViewのディメンションにWRAP_CONTENTを使用するなど、以前は使用できなかったシナリオが可能になったことを意味します。
すべての組み込みLayoutManagersで自動測定がサポートされるようになりました。

この変更により、アイテムビューのレイアウトパラメーターを必ず確認してください:以前は無視されていたレイアウトパラメーター(スクロール方向のMATCH_PARENTなど)は、完全に尊重されます

アイテムのレイアウトで変更する必要があります:

Android:layout_height="match_parent"

Android:layout_height="wrap_content" 
126

Recyclerviewとアイテムレイアウトの高さでコンテンツをラップする必要があります。

14
Göksel Güren

私の場合、新しいwrap_contentの変更を行っていましたが、onMoveまたはonSwipe中に明らかになったギャップがまだありました。私はこのコードを追加することでそれを解決しました:

mRecyclerView.getLayoutManager().setMeasurementCacheEnabled(false);
6
Lee Hounshell

これは私の仕事です。

<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>
3
Basant