美文网首页APP开发经验总结Android开发Android 开发技术分享
实现两个RecyclerView联动(左侧固定一栏,右侧可左右滑

实现两个RecyclerView联动(左侧固定一栏,右侧可左右滑

作者: Android小马哥 | 来源:发表于2017-08-26 16:24 被阅读352次

最近开发遇到的一个需求。展示篮球队员的各种数据,左侧一栏是球员的名字。右边是各种各样的数据,包括赛季三分球,篮板,抢断,得分,失误。然后三分球二分球罚篮命中率等。有七八项之多。我心想这啥需求啊。左边固定,右边还可以滑动。然后滑动右侧或者左侧,另外的要跟着动,毕竟是球员与球员数据对应。WTF。


{_~6X`YGI44LJCFT(}AE(J2.png

可能大家一看也跟我一样。觉得很复杂,一个跟着一个动,流畅性怎么样。然后右边的左右滑动又该如何实现呢。
别着急,我已经帮大家踩好了坑。虽然大多数开发中很少有这样的页面展示需求。这里记录下,希望有同样需求的有所帮助。毕竟我当时百度是没有百度到这种需求的。

一、写左右两个RecyclerView

左侧recyclerView的Item布局就是一个TextView展示球员名字。右侧的recyclerView的item。因为比较长。所以,每一个item必须指定宽度dp。比如每个50dp、用权重的话整个item会被压缩在屏幕里。而无法左右滑动。这个比较好理解。

二、将第二个RecyclerView包在HorizontalScrollView中。

将RecyclerView包在HorizontalScrollView中。这样就可以左右滑动了。贴下布局代码

      <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:paddingBottom="10dp"
                        >
                        <LinearLayout
                            android:layout_width="80dp"
                            android:layout_height="wrap_content">
                            <android.support.v7.widget.RecyclerView
                                android:id="@+id/foot_info_water_left_recycler"
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                />

                        </LinearLayout>
                        <HorizontalScrollView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:scrollbars="none" //去掉滚动条
                            >
                            <android.support.v7.widget.RecyclerView
                                android:id="@+id/foot_info_water_right_recycler"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                />
                        </HorizontalScrollView>
                    </LinearLayout>

三、让左右RecyclerView进行联动

我们发现现在滑动我们的recyclerView是左右两侧并没有跟着滑动的。有的同学可能想分别监听左右两侧的滑动距离。然后再动态设置给左右两侧。这样也不是不可以。之前做别的需求的时候,那时候还是用listview,尝试过。滑动的时候超级不流畅。已经到了卡顿的地步。
其实想让左右两侧跟着动超级简单。用NestedScrollView(V4包系统自带)包一下上面的布局,就可以了。就这么简单。

四、最后的优化

进行完上面的步骤我们的左右两侧已经跟着滑动了。但是会超级不流畅。一划只能滑动几个item。没有filing。这是因为我们的recyclerview跟nestedScrollView都进行了滑动计算。那么让recycle人View不进行滑动计算。让滑动全有scrollView来接受。就会变得流畅了。代码里设置

mRightRecyclerView.setNestedScrollingEnabled(false); 

如果我们的布局最外层是SwipeRefreshLayout的话。会跟ScrollView有冲突。进行一下Scroll是否滑动到顶部的判断即可。


        mScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
            @Override
            public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                if(mScrollView.getScrollY()==0){
                    mRefreshLayout.setEnabled(true);
                }else {
                    mRefreshLayout.setEnabled(false);
                }
            }
        });

总结

总的来说,还是RecycleView强大。暴露出的超级多的方法。可以高度定制。 有兴趣的可以看下源码。之前在 泡在网上的日子 看的源码解析还不错。

大家可以关注下我的微信公众号。dongyun_android

以后有了新的内容会分享给大家。一起提高。
扫码关注。


image.png

谢谢大家的阅读。

相关文章

  • 实现两个RecyclerView联动(左侧固定一栏,右侧可左右滑

    最近开发遇到的一个需求。展示篮球队员的各种数据,左侧一栏是球员的名字。右边是各种各样的数据,包括赛季三分球,篮板,...

  • CSS常用布局方案

    上中下一栏式布局 上中下各一栏 左右两栏式布局 左侧固定,右侧自适应 float + calc:左侧浮动,右侧宽度...

  • 多列布局方案

    两栏布局 左侧固定右侧自适应 右侧固定左侧自适应 技术原理(左侧固定右侧自适应) 结构上左右两个盒子,左侧设置为固...

  • CSS常用布局

    1、左右布局 1) float实现,左侧宽带固定,右侧宽度自适应 核心代码:左侧:width:100px ;flo...

  • 前端仿美团菜单双侧菜单联动

    工作中遇到一个左右菜单联动的需求,记录一下。 如图 主要的实现功能1.点击左侧右侧滚动到对应位置2.右侧滑动,左侧...

  • 常见网页布局的介绍

    左侧固定,右侧自适应 右侧固定,左侧自适应 圣杯布局(左右固定,中间自适应) 中间固定 两侧自适应 等分布局 等分...

  • flex的左右布局,右侧出现x轴滚动条

    场景: flex的左右布局,左侧菜单宽度固定,右侧自适应。 实现: .main{width:100%;disp...

  • tableView左右联动

    实现 tableView联动 主要有两个细节(需要创建两个tableView) 1、点击左侧 cell 让右侧 t...

  • 表格连动效果

    摘要:两个tableview的联动,滑动左侧tableview,右侧tableview跟着滑动其实实现起来比较简单...

  • 左侧固定,右侧自适应实现

    1、两个元素inline-block,右侧宽度calc(100% - width1),注意:两个子元素标签之间无空...

网友评论

    本文标题:实现两个RecyclerView联动(左侧固定一栏,右侧可左右滑

    本文链接:https://www.haomeiwen.com/subject/qfomdxtx.html