第一行Horizo​​ntal Recyclerview with Vertical RecyclerView in android

时间:2017-07-05 06:29:12

标签: android header android-recyclerview

我想像谷歌游戏商店一样使用水平回收机和垂直回收机,但在我的应用程序中只有第一行,如下图所示。我使用了scrollview,但是当我们拥有大量数据和分页时,它不像我想要的那样正确。它还有水平和垂直回收器的标题部分,当垂直标题部分滚动到它​​与iOS中的UiTableView的TitleSection相同时,水平回收标题部分将改变。 谢谢!

enter image description here

2 个答案:

答案 0 :(得分:2)

  1. 使用NestedScrollView作为RecyclerViews
  2. 的容器
  3. LinearLayoutManager方向将recycler_view_horizontal设置为Horizontal
  4. LinearLayoutManager方向将recycler_view_vertical设置为Vertical
  5. 使用RecyclerView.setNestedScrollingEnabled(false)RecyclerView进行平滑滚动。
  6. 设计您的布局结构如下:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/layout_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="?attr/colorPrimary"
                android:minHeight="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                android:theme="@style/ThemeOverlay.AppCompat.Dark"
                app:titleTextColor="@android:color/white"
                app:contentInsetStartWithNavigation="0dp">
            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:id="@+id/layout_scorll"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <TextView
                    android:id="@+id/header1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="12dp"
                    android:paddingBottom="8dp"
                    android:paddingTop="8dp"
                    android:text="Horizontal Recycler Header"
                    android:textSize="16sp" />
    
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/recycler_view_horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:nestedScrollingEnabled="false" />
    
                <TextView
                    android:id="@+id/header2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="12dp"
                    android:paddingBottom="8dp"
                    android:paddingTop="8dp"
                    android:text="Vertical Recycler Header"
                    android:textSize="16sp" />
    
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/recycler_view_vertical"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:nestedScrollingEnabled="false" />
    
            </LinearLayout>
        </android.support.v4.widget.NestedScrollView>
    </android.support.design.widget.CoordinatorLayout>
    

    在你的Activtiy中:

    mRecyclerViewHorizontal.setNestedScrollingEnabled(false);
    mRecyclerViewVertical.setNestedScrollingEnabled(false);
    
    mRecyclerViewHorizontal.setHasFixedSize(false);
    mRecyclerViewVertical.setHasFixedSize(false);
    

    希望它有所帮助!

答案 1 :(得分:0)

  1. 在这种情况下,请为垂直项目使用一个回收站视图。
  2. 对于顶部水平(回收者视图或滚动视图或任何视图),在垂直回收者视图中添加标题。
  3. 您需要使用自定义适配器添加标头,并且可以根据需要添加多个标头。
  4. 不要忘记增加列表的大小。

      @Override
      public int getItemCount() {
      // if one header added
      return list.size() + 1;
      }