自定义View实现水平滚动控件

      前几天项目中需要使用到一个水平可滚动的选择条,类似下图效果(图片是从简书上一位作者那儿找来的,本篇也是在这位作者的文章的基础上修改的,站在大神的肩膀上,哈哈,由于原文没有提供demo,而且实现的效果跟我要的不一样(原文不是自定义控件,怎么说自己也是偷懒吧,所以直接封装一下,跟原文代码差别还是很大的),所以进行了一些修改,原文地址:思路来源 )。

这个滚动选择条主要基于RecyclerView实现,实现的功能如下:

1. 滚动选择   2.点击选择   3.选中项目居中高亮显示

效果图如下:

效果图


思路原文描述的非常清楚,我在原有基础上做了修改,都在代码中有注释。

介绍下我的这个demo的使用,非常简单:

1.在xml中加入自定义的布局

写入自定义view的包名全路径,设置一下其他基本属性,完事。

2.在MainActivity中设置使用

    (1)找到自定义的view和其中的RecyclerView

    (2)准备数据

    (3)添加监听器

             这个监听器主要是为了获取RecyclerView的宽度,因为在onCreate执行的时候,视图还没有绘制出来,直接getMeasureWidth()等方法获取的都是0,这个监听器给视图添加一个回调,在视图绘制的瞬间就可以获得视图宽度。

    (4)调用自定义View公开的方法,设置数据,初始化适配器。

第一次在简书写文章,有不足之处欢迎指出,好让我可以改进,当然也欢迎多多鼓励小弟,有动力继续写下去哈~~~最后附上demo下载地址,有需要的同学欢迎使用~~开源万岁~~Demo地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

在Android 设备上获取照片、裁剪图片、压缩图片 @TakePhoto V3.0 发布

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://www.devio.org) TakePhoto 简介 TakePhoto是一款用...

4006
来自专栏腾讯社交用户体验设计

SVG fallback 及可读性

973
来自专栏魏艾斯博客www.vpsss.net

屏幕 GIF 动态图捕获软件及录制过程

作为站长有时候需要录制屏幕 GIF 动态图片,就得现学现卖。这不魏艾斯博客在使用遨游浏览器的过程中遇到一些 bug 需要提交给官方,遨游技术员希望老魏提供一段正...

652
来自专栏web开发

HTML5中的Web Notification桌面通知

大家在做一些浏览器端的聊天功能的时候,或者在一些网站跟在线客服咨询的时候,会看到一些消息通知的提示,常见的有浏览器标签页的闪烁和屏幕右侧的消息通知。本篇博客就在...

3426
来自专栏小文博客

前端利器——Fscapture

951
来自专栏Youngxj

自适应导航网页源码

4192
来自专栏小文博客

前端利器——Fscapture

《FSCapture》是一款抓屏工具,体积小巧、功能强大,不但具有常规截图等功能,更有从扫描器获取图像,和将图像转换为 PDF文档等功能。

4159
来自专栏贺贺的前端工程师之路

Flex Box布局学习- 兼容

随着自己写过的页面的增多,也遇到了很多CSS兼容性的问题。这些兼容性问题,都是必然的,因为技术在不断进步,不断革新,所谓,“后浪推前浪,前浪拍死在沙滩上”,当然...

672
来自专栏Crossin的编程教室

Python的门面担当

在大多数时候,我们都在黑黢黢的控制台里执行 Python 脚本。这看起来很酷很 GEEK。但对于部分场景下的用户来说,这样就不大美观和人性化了:我们需要交互更方...

1124
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native按钮详解|Touchable系列组件使用详解

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://www.devio.org) 在做App开发过程中离不了的需要用户交互,说到交互,...

4347

扫码关注云+社区