自定义ListView FastScroller滑块图片 以及 android:fastScrollEnabled="true" 不起作用

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

使用ListView FastScroller,默认滑块和自定义滑块图片的样子:

imageimage

设置快速滚动属性很容易,只需在布局的xml文件里设置属性即可:

<ListView android:id="@+id/listView" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:fastScrollEnabled="true"
    android:focusable="true"
/>

但是有时候会发现设置属性无效,滚动ListView并未出现滑块。原因是该属性生效有最小记录限制。当ListView记录能够在4屏以内显示(也就是说滚动4页)就不会出现滑块。可能是api设计者认为这么少的记录不需要快速滚动。

我的依据是android源代码,见FastScroller的常量声明:

// Minimum number of pages to justify showing a fast scroll thumb
   private static int MIN_PAGES = 4;

以及:

// Are there enough pages to require fast scroll? Recompute only if total count changes
        if (mItemCount != totalItemCount && visibleItemCount > 0) {
            mItemCount = totalItemCount;
            mLongList = mItemCount / visibleItemCount >= MIN_PAGES;
}

通篇查看了ListView及其超累AbsListView,都未找到自定义图片的设置接口。看来是没打算让开发者更改了。但是用户要求我们自定义这个图片。那只能用非常手段了。

经过分析发现,该图片是ListView超类AbsListView的一个成员mFastScroller对象的成员mThumbDrawable。这里mThumbDrawable是Drawable类型的。mFastScroller是FastScroller类型,这个类型比较麻烦,类的声明没有modifier,也就是default(package),只能供包内的类调用。

因此反射代码写的稍微麻烦一些:

try {
    Field f = AbsListView.class.getDeclaredField("mFastScroller");
    f.setAccessible(true);
    Object o=f.get(listView);
    f=f.getType().getDeclaredField("mThumbDrawable");
    f.setAccessible(true);
    Drawable drawable=(Drawable) f.get(o);
    drawable=getResources().getDrawable(R.drawable.icon);
    f.set(o,drawable);
    Toast.makeText(this, f.getType().getName(), 1000).show();
} catch (Exception e) {
    throw new RuntimeException(e);
}

这样就可以改变默认的滑块图片了。

源代码见:

http://easymorse.googlecode.com/svn/tags/ListViewCustomerFastScroller-0.1/

转:http://marshal.easymorse.com/archives/3929
RecyclerView 快速滑动 RecyclerView 快速滑动基于FastScrollerBar 前段时间无聊的情况下用抓包写了一个小说阅读器,在做目录页面的时候发现如果有很多很多目录,比如成千上万的时候,这个时候用本身的fast Scroller bar来滑动,那么scrollerbar很小,小到手指根本不能触摸到,别说按着滑动了,于是百度解决方法,找了很久没有找到自己想要的,后面的时候找到了一个不怎么火的插件:recyc... 阅读详情

相关推荐

快速滚动滑块(Fast ScrollThumb)的实现

Fast ScrollThumb 一 Fast ScrollThumb简介   随着智能终端的日益普及,人们更多地使用手机上网,读小说,购物等等,这些网页往往也会比较长,由于智能终端屏幕的限制,很多APP都会提供一个快速滚动滑块(Fast ScrollThumb),便于用户快速移动页面,定位到想要的页面位置。然而Fast ScrollThumb 并未成为系统的标准控件,需要应用开发者自己去实现

Fantasy_116的专栏 2665

自定义ListView FastScroller滑块图片

推荐安卓开发神器(里面有各种UI特效和android代码库实例) 使用ListView FastScroller,默认滑块自定义滑块图片的样子: 设置快速滚动属性很容易,只需在布局的xml文件里设置属性即可: &lt;ListView android:id="@+id/listView" android:layout_width="fill_parent"     android...

xSTARx 211

Android-一个类似ListViewFastScroller但用于Android的RecyclerView.

一个类似ListViewFastScroller但用于Android的RecyclerView.

fastScrollEnabledListView的快速滑动模式,以及滑块自定义

一、显示ListView快速滑动块图标   设想这样一个场景,当ListView的内容有大于100页的情况下,如果想滑动到第80页,用手指滑动到指定位置,无疑是一件很费时的事情,如果想快速滑动到指定的位置,只需加上ListViewfastScrollEnabled属性等于true,启用快速滑动功能即可。 1 2 3 4 5

嘻哈包袱铺 专栏 4721

ListView个性化滑动指示器酷炫效果

前几天看到有好多人搞了一个listView的一个指示特效。然后自己参考了一下面对这样的效果年会想起来几种思路? - 自定义scrollView+scrollBar - 自定义ListView+自定义ScrollBar - 自定义 RecycleView - 自定义Behavior - 自定义listView + PopuWindows - 自定义ViewGroup 这几种哪一种是最合

这个时代,作为程序员可能要学习小程序 3058

Android Scrollbar和FastScrollbar

RecyclerView ListView 自定义 scrollbar和fastScrollbar

zh_qianwei的博客 2134

Android常见问题分析之自定义ListView FastScroller滑块图片 以及 android:fastScrollEnabled="true" 不起作用

使用ListView FastScroller,默认滑块自定义滑块图片的样子: 设置快速滚动属性很容易,只需在布局的xml文件里设置属性即可:     android:layout_height="fill_parent" android:fastScrollEnabled="true"      android:focusable="true" /> 但是有

小吕丶Code阶区 3047

自定义ListView FastScroller滑块图片 以及 android:fastScrollEnabled="true" 不起作用

使用ListView FastScroller,默认滑块自定义滑块图片的样子:设置快速滚动属性很容易,只需在布局的xml文件里设置属性即可:<ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" and...

weixin_34174322的博客 109

Android-自定义ListView FastScroller滑块图片

[url]http://disanji.net/2011/01/17/custom-listview-fastscroller-picture/[/url] [url]http://hi.baidu.com/%B1%F9%BB%F0%D5%BD%B5%D8/blog/item/d7143f29107436e4e6cd40c4.html[/url] [url]http://blog.csdn.n...

macleo的路 146

java 代码创建RecyclerView 无法显示滚动条

在有些需求中,需要使用java 代码动态创建控件。 经过研究发现动态创建的RecyclerView 无论怎么设置都无法显示滚动条 后面在搜索引擎中找到了类似的说明,因为xml 创建的布局会经过初始化 而动态创建的初始化不会调用对应的方法所以代码再怎么设置都不会生效。 在源码中发现有个受保护的initializeScrollbars 方法,在外部无法调用到的,因为就暴力调用了,java 中暴力

bwcx_jzy 的博客 2106

android:fastScrollEnabledandroid:drawSelectorOnTop

android:fastScrollEnabledandroid:drawSelectorOnTop 博客分类: Android android:fastScrollEnabled="true" 是让ListView出现快速滚动的按钮,一开始,我的记录只有十条,我在拉动的时候都不见出现快速滚动,后来才发现,原因是数据不多的原因,只要数据足够多,才会自动出现的。 还有

Tiny的专栏 2235

ListView自定义 FastScroller滑块

默认开启只需要           android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:id="@+id/listView"         android:fastScrollEnabled="true"  /> 而且会自动隐藏

心怀产品梦的安卓码农 1935

布局与控件(七)-ListView知多少(上)

ListView在很多应用当中都会用到。它有那么多属性都能够干嘛?本文为你整理了最为经常使用的属性,图文并茂的让你看到它们的实际效果。

不积跬步无以至千里 6938

(转)android:fastScrollEnabledandroid:drawSelectorOnTop的用法

http://enki-ding-yeah-net.iteye.com/blog/1269811 android:fastScrollEnabled="true" 是让ListView出现快速滚动的按钮,一开始,我的记录只有十条,我在拉动的时候都不见出现快速滚动,后来才发现,原因是数据不多的原因,只要数据足够多,才会自动出现的。   还有一个属性:android

Elvis写代码 1072

FastScroll 开源项目教程

--- ## 项目介绍 FastScroll 是一个用于 Android 平台的开源库,由 L4Digital 开发并维护。该库旨在提供高效的滚动体验,特别是在含有大量条目的列表视图中。通过集成 FastScroll,开发者能够为他们的应用程序添加类似于系统自带的快速滚动栏功能,帮助用户更快地定位到列表中的特定位置,提高用户体验。它轻量级且高度可定制,支持自定义样式和行为。 ## 项目快速启

gitblog_00198的博客 389

HiddenDesktop BOF实现详解:从代码注入到进程通信的完整流程

HiddenDesktop是一个基于Cobalt Strike的HVNC工具,其BOF(Beacon Object File)实现是整个项目的核心组件。本文将从代码注入到进程通信,全面解析HiddenDesktop的BOF实现原理,帮助安全研究人员理解其工作机制。 ## BOF架构概览 HiddenDesktop的BOF实现主要集中在`client/bof/`目录下,包含入口函数、汇编启动代码

gitblog_00623的博客 1126

AndroidFastScroll 使用指南

--- ## 项目介绍 AndroidFastScroll 是由开发者张海创建的一个开源库,旨在简化 Android 应用程序中 RecyclerView 快速滚动功能的实现。它提供了高度可定制化的滑块,使得长列表的数据浏览变得更加便捷高效。通过集成这个轻量级的库,开发者可以快速为其应用中的列表视图添加类似于系统联系人应用那样的快速定位功能,提升用户体验。 --- ## 项目快速启动 要

gitblog_00099的博客 975

Android 滚动条

小小滚动条,设计还是挺复杂。其中有两种类型的滚动条,一条是普通的滑动时的滚动条,一种是快速滚动条项目中曾经就出现过XML定义了android:scrollbars="none" 但是滑动时,还是会出现滚动条,其中是因为设置了快速滚动条的原因android:fastScrollEnabled="true",而默认android:fastScrollEnabled是false...

weixin_34166847的博客 201
上一篇: ListView问题汇总
下一篇: android:ellipsize省略文字用法
wx1qq1com
博客等级 码龄17年 123粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值