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

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

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

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

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

收集几个关键点吧

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

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

3:需要对RecyclerView进行联动

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

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

所以基本有思路了

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

左右滑动做ScrollView联动

下面看xml layout代码吧

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"> <LinearLayout
android:layout_width="match_parent"
android:gravity="center_vertical"
android:layout_height="40dp"> <LinearLayout
android:gravity="center"
android:layout_width="120dp"
android:background="@color/gray_trans"
android:layout_height="match_parent"> <TextView
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="党支部"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> </LinearLayout> <demo.MyScrollView
android:id="@+id/scrollView_right_up"
android:layout_width="match_parent"
android:scrollbars="none"
android:layout_height="wrap_content"> <RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <demo.MyRecyclerView
android:id="@+id/recyclerview_right_up"
android:layout_width="match_parent"
android:layout_height="40dp"> </demo.MyRecyclerView> </RelativeLayout> </demo.MyScrollView> </LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_left_bottom"
android:layout_width="119dp"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView> <View
android:background="@color/gray_trans"
android:layout_width="1dp"
android:layout_height="match_parent"/> <demo.MyScrollView
android:id="@+id/scrollView"
android:layout_width="wrap_content"
android:layout_height="match_parent"> <RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <demo.MyRecyclerView
android: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() {
@Override
public 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() {
@Override
public 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() {
@Override
public void onScroll(int scorllX, int scrollY, int oldX, int oldY) { scrollViewRU.scrollTo(scorllX,scrollY);
}
}); scrollViewRU.setOnScrollListener(new MyScrollView.OnScrollListener() {
@Override
public void onScroll(int scorllX, int scrollY, int oldX, int oldY) {
scrollViewRB.scrollTo(scorllX,scrollY);
}
}); }

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

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

就搞定了

双重ScrollView,RecyclerView联动实例的更多相关文章

  1. Android实现两个ScrollView互相联动,同步滚动的效果

    公众号:smart_android 作者:loonggg 点击"阅读原文",可查看更多内容和干货 最近在做一个项目,用到了两个ScrollView互相联动的效果,简单来说联动效果意 ...

  2. RecyclerView联动滑动失败

    RecyclerView联动滑动失败 我们在做Recyclerview联动滑动的时候,就是左边一个RecyclerView右边一个RecyclerView 我们希望左边的RecyclerView可以和 ...

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

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

  4. android开发学习 ------- RecyclerView多类型实例

    实现RecyclerView多类型的实例:效果如下图所示 public class CarFragment extends Fragment{ private View view; private R ...

  5. Django(二十)下拉列表-省市联动实例:jquery的ajax处理前端

    一.知识点 1.jquery的ajax请求写法 <script src="/static/js/jquery-1.12.4.min.js"></script> ...

  6. JS三级联动实例

    简单的HTML实例: <h4>选择省</h4> <div class="selectSheng"></div> <select ...

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

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

  8. js省市二级联动实例

    //动态创建省市二级联动<!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  9. vue2.0+mint-ui资讯类顶导航和内容页联动实例(不是很完美)

    <template> <div> <div class="navbox"> <div class="nav"> ...

随机推荐

  1. Spring MVC请求流程

    Spring MVC 发起请求到前端控制器DispathServlet 前端控制器请求处理器映射器 handerMapping查找handler 处理器映射器handerMapping像前端控制器返回 ...

  2. 编程规范(初尝ES6与webpack)

    //针对ES6规范(第1-5条)start1.块级作用域let/const取代var:在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量. 2.解构赋值1 ...

  3. matlab的Deep Learning的toolbox 中的SAE算法

    最近一直在看Deep Learning,各类博客.论文看得不少 但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox 只是跟着Andrew Ng的 ...

  4. eclipse发布到tomcat

    1.用maven集成的工程,在发布的时候,发现其中的变量没有改变,类似${}不存在之类 解决方式:这个类问题是由于缓存导致,基本方法就是clean一下,重启eclipse,最后不行重启电脑 2.今天遇 ...

  5. 关于linux系统CPU篇--->平均负载

    1.什么是平均负载?(load average) 平均负载是指单位时间内平均活跃进程数,包括可运行状态的进程数,以及不可中断状态的进程(如等待IO,等待硬件设备响应) 2.如何查看平均负载? 使用to ...

  6. 论文笔记【四】Semi-supervised Word Sense Disambiguation with Neural Models

    基于神经模型的半监督词义消歧 Dayu Yuan  Julian Richardson  Ryan Doherty  Colin Evans  Eric Altendorf Google, Mount ...

  7. postman抓包工具与kap项目部署(新猿旺学习总结)

    postman抓包工具 1.post请求在哪里输入数据:选择请求方法-post--->在body里面如图位置输入参数和值,如果是json格式在raw出填写 get请求在哪里输入数据:选择请求方法 ...

  8. Angular4基本网络请求get、post方式

    1.在路径C:\AngularProject\AngularTest\src\app\app.module.ts这个文件下面引入 2.在需要用到的js文件引入 3.GET/POST  带参/不带参请求

  9. sqlmap学习笔记

    SQLmap 神仙工具Orz.需要安装python2.7环境. 语法 -u 指定url --is-dba 查询是否为数据库管理员(database administrator) --dbs 查询数据库 ...

  10. LuoguP2617 Dynamic Rankings (动态主席树学习理解)

    题目地址 题目链接 题解 动态主席树的板子题.动态主席树其实和静态的有很大差别,虽然同样是n个根,但是节点并不能共用,每个根节点表示bit上的一段区间. 所以其实是个树套树的东西来着,外层是bit,内 ...