Android实现侧边栏按字母索引

用户需求

很多带有列表信息的控件,如ListView,RecyclerView,当需要显示大量信息的时候,
右侧都有一个竖直排列的字母表,手指滑动即可实现按字母定位,比如你手机里的系统联系人界面。

概念设计

  • 右侧的字母栏,实现View.OnTouchListener接口,当手指触摸滑动时,
    获取相对于触发这个事件的视图(这里即指字母栏)的左上点的坐标的纵坐标Y,是不是有点绕口。
  • 用当前的Y除以字母栏的高度height,得到一个浮点数index,这个浮点数其实就是在字母栏左上角为原点的坐标系下,你手指触摸位置所占的高度比例。
  • index乘以27,转换为整数,就得到了当前触摸位置的字母序号,我们再从一个字母字符串数组里,按序号匹配字母就好了。

是不是很疑惑为什么是27,而不是26?明明字母只有26个嘛!哈哈,如果你细心观察,你就会发现还有一个通配符#

详细设计

假如我们现在要显示的信息是联系人列表,那么我们的第一步,是把联系人姓名(汉子)转化为拼音,这个网上有很多教程,不是本文的重点,先不讲,假设我们已经写好了这个方法String.getPinYin().

初始化

LinearLayout alphabetLayout是一个带有字母的纵向线性布局,你可以用图片来做,也可以自己绘制,甚至可以放27个TextView,方法很多。

public class AlphabetSearch implements View.OnTouchListener{
   
    LinearLayout alphabetLayout;//显示字母的线性布局
    ListView listView; //包含信息的列表
    TextView current; //屏幕居中显示当前选中的字母ÿ
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值