自定义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 条评论
登录 后参与评论

相关文章

来自专栏韩东吉的Unity杂货铺

零基础入门 3: 窗口介绍(一)

前两篇介绍了Unity的环境布置,破解,平台切换。如果哪里有所遗忘可以翻看历史消息重新巩固下。

873
来自专栏iOS Developer

微信小程序开发教程-从零开始(2)

1636
来自专栏猿人谷

ubuntu的美化

一、Usplash画面(开机/启动画面) 它就相当于Windows的开机/启动画面,因为 ubuntu 使用usplash这个软件作为启动画面,所以我们就叫它为...

2279
来自专栏美丽应用

安卓Chrome使用技巧合辑

2.7K3
来自专栏速成应用小程序开发平台

新手教程|速成应用教你如何制作搭建自己的微信小程序

微信小程序已经迈入了爆发阶段,很多中小企业和商户正在不断涌入这个市场。但是很多不懂技术不懂代码的小白却不知道去哪里制作微信小程序,现在就以可视化小程序开发工具「...

1.3K5
来自专栏更流畅、简洁的软件开发方式

【分享】 纯 js 表单控件 —— 让 “增改查” 更轻松!

  我们在做增删改查的时候,必可避免的要做表单,那么表单是怎么弄出来的呢?拖拽控件、手写、js创建还是第三方控件(包括js版)? 以前用服务器控件写了一套表单控...

3318
来自专栏小程序·云开发专栏

解剖小程序的 setData

原文链接:https://godbasin.github.io/2018/10/05/wxapp-set-data/

7473
来自专栏小白鼠

Ionic3 高德Web定位

高德提供了Web平台定位的JS API,同样需要用到 APP_Key,并且需要注意是使用Web端的Key,如下图所示。必须是Web端的,其它平台的无效。 ht...

1182
来自专栏司想君

HTML5.2新特性解读

不到一个月之前,W3C官方发布 HTML5.2,并成为官方推荐使用标准。这意味着作为web开发者,我们可以愉快地使用5.2中的新特性了。 W3C在HTML5.2...

3555
来自专栏破晓之歌

vue引入各类ui库 原

本身集成并没有vue的部分,我们采用的方式是把ui-css部分拿来使用,js效果自己用jquery写到methods里

3305

扫码关注云+社区