RecyclerView
のv23.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" >
リリース23.2.0では、LayoutManager APIにエキサイティングな新機能があります:auto-measurement!
これにより、RecyclerView
がコンテンツのサイズに基づいて自身のサイズを変更できます。これは、RecyclerViewのディメンションにWRAP_CONTENTを使用するなど、以前は使用できなかったシナリオが可能になったことを意味します。
すべての組み込みLayoutManagersで自動測定がサポートされるようになりました。
この変更により、アイテムビューのレイアウトパラメーターを必ず確認してください:以前は無視されていたレイアウトパラメーター(スクロール方向のMATCH_PARENTなど)は、完全に尊重されます。
アイテムのレイアウトで変更する必要があります:
Android:layout_height="match_parent"
と
Android:layout_height="wrap_content"
Recyclerviewとアイテムレイアウトの高さでコンテンツをラップする必要があります。
私の場合、新しいwrap_contentの変更を行っていましたが、onMoveまたはonSwipe中に明らかになったギャップがまだありました。私はこのコードを追加することでそれを解決しました:
mRecyclerView.getLayoutManager().setMeasurementCacheEnabled(false);
これは私の仕事です。
<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>