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

相关文章

来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2130
来自专栏杨龙飞前端

scrollto 到指定位置

2554
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2675
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3028
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32610
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4878
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4948
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2727
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2626
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4807

扫码关注云+社区