最近收到一个需求,如图,大家一看,不就是一个简单的表格吗,RecyclerView就搞定了

我一开始也是这么想的,但是当我继续听下去

需求是左边党支部栏目只能上下滑动,之后联动右边下方表格一起上下滑动,右边下方表格滑动,左边下方表格依然如此

然后右边上方只能左右滑动,之后联动右边下方表格一起左右滑动,右下方滑动,右上同样一起滑动

然后此时我的内心是崩溃的

收集几个关键点吧

1:右下方部分既能左右滑动,又可以上下滑动

2:左上角就是一个TextView,不动

3:需要对RecyclerView进行联动

4:ListView应该也可以实现,但是我使用了扩展性更好的RecyclerView

5:RecyclerView不可以既左右滑动,又上下滑动,即他只能支持一个方向

所以基本有思路了

RecyclerView放在ScrollView容器内,上下滑动做RecyclerView联动

左右滑动做ScrollView联动

下面看xml layout代码吧

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:gravity="center_vertical"android:layout_height="40dp"><LinearLayoutandroid:gravity="center"android:layout_width="120dp"android:background="@color/gray_trans"android:layout_height="match_parent"><TextViewandroid:layout_marginStart="16dp"android:layout_marginEnd="16dp"android:text="党支部"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><demo.MyScrollViewandroid:id="@+id/scrollView_right_up"android:layout_width="match_parent"android:scrollbars="none"android:layout_height="wrap_content"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><demo.MyRecyclerViewandroid:id="@+id/recyclerview_right_up"android:layout_width="match_parent"android:layout_height="40dp"></demo.MyRecyclerView></RelativeLayout></demo.MyScrollView></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerview_left_bottom"android:layout_width="119dp"android:layout_height="match_parent"></android.support.v7.widget.RecyclerView><Viewandroid:background="@color/gray_trans"android:layout_width="1dp"android:layout_height="match_parent"/><demo.MyScrollViewandroid:id="@+id/scrollView"android:layout_width="wrap_content"android:layout_height="match_parent"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><demo.MyRecyclerViewandroid:id="@+id/recyclerview_right_bottom"android:layout_width="match_parent"android:layout_height="match_parent"></demo.MyRecyclerView></RelativeLayout></demo.MyScrollView></LinearLayout></LinearLayout>

其中MyScrollView是重写的暴露了onScrollChanged 方法,之后我们可以setOnScrollListener对其滑动进行监听

MyRecyclerView重写以及为什么要套一层RelativeLayout请看我上一篇文章解释

然后放出关键的联动滑动代码吧

   public void setOnScrollLowSdk(){recyclerViewLeftBottom.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {if(recyclerView.getScrollState()!= RecyclerView.SCROLL_STATE_IDLE){recyclerViewRightBottom.scrollBy(dx, dy);}}});recyclerViewRightBottom.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {if(recyclerView.getScrollState()!= RecyclerView.SCROLL_STATE_IDLE){recyclerViewLeftBottom.scrollBy(dx,dy);}}});scrollViewRB.setOnScrollListener(new MyScrollView.OnScrollListener() {@Overridepublic void onScroll(int scorllX, int scrollY, int oldX, int oldY) {scrollViewRU.scrollTo(scorllX,scrollY);}});scrollViewRU.setOnScrollListener(new MyScrollView.OnScrollListener() {@Overridepublic void onScroll(int scorllX, int scrollY, int oldX, int oldY) {scrollViewRB.scrollTo(scorllX,scrollY);}});}

命名的话应该可以看懂RU代表RightUp右上方,RB代表RightBottom右下方

至此就可以了,省去了RecyclerView数据填充以及各种的LayoutManager初始化,这个也不难

就搞定了

转载于:https://www.cnblogs.com/fengfenghuifei/p/10602583.html

双重ScrollView,RecyclerView联动实例相关推荐

  1. php三级实例,三级联动实例

    摘要:html> 三级联动实例 html> 三级联动实例 省 市 区 $(function(){ $.getJSON('demo.json',function(data){ let opt ...

  2. “京东金融”主页效果 RecyclerView联动

    先上效果图吧: 第一个想到的实现方式是上面使用horizontalScrollview,下面使用Viewpager,经过尝试之后发现二者API有限,不能达到理想效果.几经折腾,最后上下都使用了自定义的 ...

  3. 2个RecyclerView 联动

    看下效果图, 底部在给出demo地址 如果想实现类似拼多多的商品联动也是可以的,修改方法即可 下面看下实现方法 几个参数需要知道 findFirstVisibleItemPosition 显示界面第一 ...

  4. 用ajax实现dropdownlist多级联动实例

    经常用dropdownlist绑定数据,涉及到多级联动的问题,刷新页面不太好,于是花了点时间,用AjaxPro来实现无刷新绑定DropDownList数据的问题. ------------------ ...

  5. scroll-view组件bindscroll实例应用:自定义滚动条

    我们知道scroll-view组件作为滑动控件非常好用,而有时候我们想放置一个跟随滚动位置来跟进的滚动条,但又不想用滚动条api该怎么办呢?(当然是自己写一个呗还能怎么办[自黑冷漠脸]) 嗯,没错.自 ...

  6. 中国省市区三级联动实例(AJAX实现)

    本文利用ajax实现一个省市区三级联动示例: 1.测试页面(test.htm) <!DOCTYPE html> <html> <head> <title> ...

  7. 双重for循环的实例(时钟运转、长方形、平行四边形、三角形)

    1.双重for循环模拟时钟运转 话不多说,直接上代码! public class forDouble {public static void main(String[] args) {for (int ...

  8. android recyclerview,AndroidRecyclerView中的Item嵌套RecyclerView使用实例

    最近项目中有一个需求是RecyclerView中的Item中嵌套RecyclerView,在网上没找到什么资料,然后就自己尝试了一下. 首先看一下效果图 录制GIF现在不大方便,就直接上两个图了. 关 ...

  9. Android的ScrollView简单使用实例(附Demo)

    目录 1.垂直滚动:Scroll 2.水平滚动:HorizontalScrollView Demo地址:https://github.com/zGuangYuan/Androidstudio_exam ...

最新文章

  1. c++:文件操作1 文件的打开
  2. 文件夹内多文件上传到服务器
  3. cad表示计算机辅助,CAD计算机辅助设计之快捷键篇~( ̄▽ ̄)
  4. 为什么说python是世界上最好的语言-python是世界上最好的语言
  5. 【强化学习】Sarsa 和 Sarsa(λ)
  6. 推荐系统笔记(信息消费)
  7. python集合类型_python集合类型介绍
  8. C++binomial calculate二项式计算的算法(附完整源码)
  9. (z) 什么是好的硬件工程师
  10. java扫描指定package注解_java随笔-扫描使用指定注解的类与方法
  11. 到底是什么程序和功能?
  12. Spring MVC+Ant+Tomcat+Eclipse最简单的demo
  13. 订阅号 笔记记录开发 php,微信订阅号开发笔记(五)
  14. nginx解析漏洞 只要可以上传文件就会被黑
  15. linux shell学习问题部分记录
  16. python语言中print函数的作用_python3入门之print,import,input介绍
  17. MAC安装淘宝镜像NPM
  18. Rainmeter监控GPU
  19. 计算机数字媒体专业职业规划书,如何写数字媒体技术的职业生涯规划书?
  20. 计算机无线网卡连接网络,电脑有线网络跟无线网络无法连接,解决方法

热门文章

  1. Git远程:分支的upstream
  2. Java ArrayList的不同排序方法
  3. 旧文重发:做人、做事,做架构师——架构师能力模型解析
  4. 关于Python编程的一些问答
  5. SIFT(Scale-invariant feature transform, 尺度不变特征转换)特征
  6. 开源矿工README
  7. Openstack平台搭建(先电版)
  8. maven 插件在线安装
  9. 独家专访 | 从跨国投行到开源社区,IBM Spark总工程师Nick Pentreath的传奇经历
  10. c++ primer 5th 笔记:第二章