自定义GridLayoutManager提供带有WRAP_CONTENT的RecyclerView

时间:2016-02-03 13:55:29

标签: android android-recyclerview

我有一个片段,其中包含两个RecyclerViews(一个在两列网格中,另一个在我的实际Feed中)。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">


<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:scrollbars="none"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

<android.support.v7.widget.RecyclerView
    android:id="@+id/second_recycler_view"
    android:scrollbars="none"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/recycler_view"
    />

如何在一个布局中实现两个RecyclerView?

1 个答案:

答案 0 :(得分:1)

尝试使用带有自定义SpanSizeLookup的GridLayoutManager的单个RecyclerView:

    GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
    GridLayoutManager.SpanSizeLookup columnSpanner = new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            return adapter.getItemViewType(position) == R.layout.your_two_column_row_layout ? 1 : 2;
        }
    };
    gridLayoutManager.setSpanSizeLookup(columnSpanner);
    recyclerView.setLayoutManager(gridLayoutManager);

并在适配器中为不同类型的行使用不同的holder。