Android自定义View——实现字母导航栏

时间:2023-12-28 15:53:38

1、自定义View实现字母导航栏

2、ListView实现联系人列表

3、字母导航栏滑动事件处理

4、字母导航栏与中间字母的联动

5、字母导航栏与ListView的联动

Android自定义View——实现字母导航栏

1、先看主布局,方便后面代码的说明


2、分析自定义字母导航栏

1.我们在使用的时候把宽设置为20dp,高设置为填充父控件,所以这里获取的宽度为20dp

2.通过循环,画出竖直的字母,每画一次得重新设置一下颜色,因为我们需要一个选中的字母颜色和默认不一样


3、ListView实现联系人列表

1.在主Activity中,定义一个数据数组,使用工具类获取数组的第一个字母,使用Collections根据第一个字母进行排序,由于工具类有点长,就不贴出来了。

2.创建一个ListView子布局,创建一个Adapter进行填充。

主布局


ListView子布局


Adapter


4、字母导航栏滑动事件处理、字母导航栏与中间字母的联动

1.在自定义View中重写dispatchTouchEvent处理滑动事件,最后返回true。

2.在主Activity传进来一个TextView,在我们滑动的时候设置Text,雅思词汇书松开的时候消失Text。设置Text的时候需要计算Text的位置,并且滑过多的话会出现数组越界的问题,所以我们在里面处理数组越界问题。

3.最后,提供一个接口,记录我们滑到的字母,为了后面可以和ListView联动。


5、字母导航栏和ListView的联动

1.我们已经通过接口传递过去了一个选择的字母,和在adapter写好了根据字母查询position的方法,这个时候只要主Activity对自定义View设置监听,判断即可。


源码下载:建议使用Import Module