Android 之 Fast Scroll 、字母索引栏

列表快速滚动,是比较常见的需求,特别是在通讯录上。

现在 Android 好多 APP 都是字母索引栏,其实字母索引是 IOS 那边的规范,很多人觉得好用就抄过来了。

在 Android 上原生的是叫 Fast Scroll ,特点是默认隐藏的,也没有一排的字母显示出来,只能在划动列表时出现。


Fast Scroll 实现方法:

  • 继承 ListActivity (普通的 Activity 貌似不行);
  • 调用 setFastScrollEnabled(true) (也可以在 XML 里设置)。
  • 配置索引(这一步比较麻烦,特别是中文)

配置样式:(这里没运行测试的,仅供参考)
<resources>

    <style name="AppBaseTheme" parent="android:Theme.Light">
    </style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
        <item name="android:fastScrollOverlayPosition">atThumb</item>
        <item name="android:fastScrollTextColor">@color/apptheme_color</item>
        <item name="android:fastScrollTrackDrawable">@drawable/fastscroll_thumb_pressed_holo</item>
        <item name="android:fastScrollPreviewBackgroundRight">@drawable/bg_default_focused_holo_light</item>
    </style>

</resources>


字母索引栏实现方法,比较原生的 FastScroll 就是要创建自定义的 View 来显示字母;
一般情况下,要先拿到中文的拼音首字母,如果是英文的就直接使用,然后按字母分类排列,添加索引配置。一切事件都要自己来做。
这个现在没看到比较简单纯粹的例子,我经历了几个项目,都是进行了大量的自定义配置。
可以参考一下蘑菇街的即时通讯开源项目: TTAndroidClient 。

拼音的生成有两种方式
使用 Android 内部的方法,看别人的经验,有些会转错,要自己调整码,不知道新版是否解决这些问题。
最新版的代码: HanziToPinyin.java 、 Transliterator.java
例子我上次到 我的 CSDN 资源文件里了,暂时发现“呵”会转错为 “A”,也就是说正确率不是 100% 的。
原生通讯录的实现方式很经典,可以研究一下源码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值