双重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"?> <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联动实例相关推荐
- php三级实例,三级联动实例
摘要:html> 三级联动实例 html> 三级联动实例 省 市 区 $(function(){ $.getJSON('demo.json',function(data){ let opt ...
- “京东金融”主页效果 RecyclerView联动
先上效果图吧: 第一个想到的实现方式是上面使用horizontalScrollview,下面使用Viewpager,经过尝试之后发现二者API有限,不能达到理想效果.几经折腾,最后上下都使用了自定义的 ...
- 2个RecyclerView 联动
看下效果图, 底部在给出demo地址 如果想实现类似拼多多的商品联动也是可以的,修改方法即可 下面看下实现方法 几个参数需要知道 findFirstVisibleItemPosition 显示界面第一 ...
- 用ajax实现dropdownlist多级联动实例
经常用dropdownlist绑定数据,涉及到多级联动的问题,刷新页面不太好,于是花了点时间,用AjaxPro来实现无刷新绑定DropDownList数据的问题. ------------------ ...
- scroll-view组件bindscroll实例应用:自定义滚动条
我们知道scroll-view组件作为滑动控件非常好用,而有时候我们想放置一个跟随滚动位置来跟进的滚动条,但又不想用滚动条api该怎么办呢?(当然是自己写一个呗还能怎么办[自黑冷漠脸]) 嗯,没错.自 ...
- 中国省市区三级联动实例(AJAX实现)
本文利用ajax实现一个省市区三级联动示例: 1.测试页面(test.htm) <!DOCTYPE html> <html> <head> <title> ...
- 双重for循环的实例(时钟运转、长方形、平行四边形、三角形)
1.双重for循环模拟时钟运转 话不多说,直接上代码! public class forDouble {public static void main(String[] args) {for (int ...
- android recyclerview,AndroidRecyclerView中的Item嵌套RecyclerView使用实例
最近项目中有一个需求是RecyclerView中的Item中嵌套RecyclerView,在网上没找到什么资料,然后就自己尝试了一下. 首先看一下效果图 录制GIF现在不大方便,就直接上两个图了. 关 ...
- Android的ScrollView简单使用实例(附Demo)
目录 1.垂直滚动:Scroll 2.水平滚动:HorizontalScrollView Demo地址:https://github.com/zGuangYuan/Androidstudio_exam ...
最新文章
- c++:文件操作1 文件的打开
- 文件夹内多文件上传到服务器
- cad表示计算机辅助,CAD计算机辅助设计之快捷键篇~( ̄▽ ̄)
- 为什么说python是世界上最好的语言-python是世界上最好的语言
- 【强化学习】Sarsa 和 Sarsa(λ)
- 推荐系统笔记(信息消费)
- python集合类型_python集合类型介绍
- C++binomial calculate二项式计算的算法(附完整源码)
- (z) 什么是好的硬件工程师
- java扫描指定package注解_java随笔-扫描使用指定注解的类与方法
- 到底是什么程序和功能?
- Spring MVC+Ant+Tomcat+Eclipse最简单的demo
- 订阅号 笔记记录开发 php,微信订阅号开发笔记(五)
- nginx解析漏洞 只要可以上传文件就会被黑
- linux shell学习问题部分记录
- python语言中print函数的作用_python3入门之print,import,input介绍
- MAC安装淘宝镜像NPM
- Rainmeter监控GPU
- 计算机数字媒体专业职业规划书,如何写数字媒体技术的职业生涯规划书?
- 计算机无线网卡连接网络,电脑有线网络跟无线网络无法连接,解决方法