双重ScrollView,RecyclerView联动实例


最近收到一个需求,如图,大家一看,不就是一个简单的表格吗,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联动实例的更多相关文章
- Android实现两个ScrollView互相联动,同步滚动的效果
公众号:smart_android 作者:loonggg 点击"阅读原文",可查看更多内容和干货 最近在做一个项目,用到了两个ScrollView互相联动的效果,简单来说联动效果意 ...
- RecyclerView联动滑动失败
RecyclerView联动滑动失败 我们在做Recyclerview联动滑动的时候,就是左边一个RecyclerView右边一个RecyclerView 我们希望左边的RecyclerView可以和 ...
- “京东金融”主页效果 RecyclerView联动
先上效果图吧: 第一个想到的实现方式是上面使用horizontalScrollview,下面使用Viewpager,经过尝试之后发现二者API有限,不能达到理想效果.几经折腾,最后上下都使用了自定义的 ...
- android开发学习 ------- RecyclerView多类型实例
实现RecyclerView多类型的实例:效果如下图所示 public class CarFragment extends Fragment{ private View view; private R ...
- Django(二十)下拉列表-省市联动实例:jquery的ajax处理前端
一.知识点 1.jquery的ajax请求写法 <script src="/static/js/jquery-1.12.4.min.js"></script> ...
- JS三级联动实例
简单的HTML实例: <h4>选择省</h4> <div class="selectSheng"></div> <select ...
- scroll-view组件bindscroll实例应用:自定义滚动条
我们知道scroll-view组件作为滑动控件非常好用,而有时候我们想放置一个跟随滚动位置来跟进的滚动条,但又不想用滚动条api该怎么办呢?(当然是自己写一个呗还能怎么办[自黑冷漠脸])嗯,没错.自己 ...
- js省市二级联动实例
//动态创建省市二级联动<!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- vue2.0+mint-ui资讯类顶导航和内容页联动实例(不是很完美)
<template> <div> <div class="navbox"> <div class="nav"> ...
随机推荐
- 接口自动化测试持续集成--Soapui接口功能测试断言
断言也就是判断实际结果与预期结果是否相等,如果相等测试通过,否则测试失败,自动化测试不管是UI,Services还有unit都需要做断言. 一.添加断言步骤的组件 二.设置断言 设置常用断言的三种方式 ...
- oracle中 sql%rowcount 用法
sql%rowcount用于记录修改的条数,必须放在一个更新或者删除等修改类语句后面执行,select语句用于查询的话无法使用, 当你执行多条修改语句时,按照sql%rowcount 之前执行的最后一 ...
- pycharm 打开json 文件 \2 自动成了转义字符
打开json 文件 \2 自动成了转义字符 暂时只发现在( \2 ) \ 后面为数字的情况下会出现转义json 文件为是指:在pycharm 中新建 file 后缀为json的文件 如: 1234.j ...
- Python 递归计算分数数列
C语言的课后习题 求数列:2/1,3/2,5/3,8/5,13/8,21/13,...前50项的和 数列规律: 第二项的分母是[前一项分子] 第二项的分子是[前一项分子与分母的和] from frac ...
- ogg 12.3 for sqlserver 2016/2014 CDC模式配置
本文主要讲述ogg 12.3 通过CDC抽取mssqlserver 2016 enterprise的过程,以sqlserver为目标端投递配置相对简单,所以在此不在赘述. 针对以前的mssqlserv ...
- SHA256withRSA证书签名,私钥签名/公钥验签
证书签名 package test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...
- layui 单选项 点击显示与隐藏
同一个页面有多个单选按钮:https://blog.csdn.net/haibo0668/article/details/86220767
- Centos7 Docker 安装笔记
1. docker官方文档地址:https://docs.docker.com/ 2. centos版本号查看命令:uname -a centos7.3版本 3. 直接yum -install ...
- 本学期C#学习个人总结
本学期C#的学习结束了,我在这里作一下总结.我还记得陈老师在第一节课上说过,学任何东西,都要学结构,否则你不会学好.当我听到这句话的时候,没有放在心上,可是随着C#学习的不断深入,我越来越发现许多知识 ...
- style1
<!doctype html> 我的简历 基本信息 姓名 张三 性别 男 应聘职位 WEb前端工程师 联系方式 手机 12312341234 Email joinefe@baidu.com ...