2

我想在flipboard中使用RecyclerView另一个(类似网格)下方的(类似列表)RecyclerView

在此处输入图像描述

RecyclerView我在里面尝试了两个ScrollView包装内容,但没有显示任何内容。

如果将其放置在线性布局中并添加相等的权重,我可以看到两个视图。但这看起来不像这个应用程序视图。

这是我的布局

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/parent_category_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minWidth="@dimen/default_small_padding"
        android:gravity="center"
        android:visibility="visible"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/category_grid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnWidth="150dp"
        android:gravity="center"
        android:visibility="visible"/>

</LinearLayout>

4

3 回答 3

3

实际上有一种非常简单的方法可以只用一个来实现所需的布局RecyclerView

关键是使用 aGridLayoutManager和它的SpanSizeLookup. 首先像这样定义你的 GridLayoutManager:

GridLayoutManager layoutManager = new GridLayoutManager(context, spanCount);

其中 spanCount 是您想要拥有的最大跨度/列数。在您的情况下, spanCount 应该是2

现在您需要一种方法来告诉这个 layoutManager 一个项目应该跨越多少个跨度。一种简单的方法是对应该只跨越一列的项目使用 viewtype/ViewHolder,对跨越整个宽度的项目使用另一个。

假设您将网格项VIEWTYPE_GRID_ITEM的视图类型定义为,标准列表项的视图类型定义为VIEWTYPE_LIST_ITEM。然后,您可以使用这些视图类型来告诉 layoutManager 何时只使用一个跨度:

layoutManager.setSpanSizeLookup(new SpanSizeLookup() {
    @Override
    public int getSpanSize(int position){
        return adapter.getItemViewType(position) == VIEWTYPE_GRID_ITEM ? 1 : spanCount;
    }
});

最后,将 layoutManager 设置为 RecyclerView:

recyclerView.setLayoutManager(layoutManager);

就是这样!

于 2015-08-28T12:13:45.777 回答
2

我不认为他们使用两个ListViews (或ListView+ GridView)。

我认为他们使用 a ListView(底部的那个)并且他们向这个列表(顶部的那个)添加了一个自定义HeaderGridView ,它看起来像一个.

或者,如果他们使用 a Recyclerview,他们可以通过在适配器中为第一项使用不同的布局来实现这一点。

PS:不建议在彼此内部使用两个可滚动视图(如Recyclerviewinside ScrollView)。

于 2015-08-28T10:59:52.083 回答
0

在 android 中,我们建议一次只使用一个可滚动视图,如果您想在另一个视图中使用一个可滚动视图,请参阅下面的链接。

1)滚动视图内的Android列表视图

2) https://stackoverflow.com/questions/6210895/listview-inside-scrollview-is-not-scrolling-on-android

于 2015-08-28T10:48:18.027 回答