使用ListView FastScroller,默认滑块和自定义滑块图片的样子如下两图: 设置快速滚动属性很容易,只需在布局的xml文件里设置属性即可: ???? <ListView android:id="@+id/listView" ??????? android:layout_width="fill_parent"? ????????android:fastScrollEnabled="true"? ??????? 但是有时候会发现设置属性无效,滚动ListView并未出现滑块。原因是该属性生效有最小记录限制。当ListView记录能够在4屏以内显示(也就是说滚动4页)就不会出现滑块。可能是api设计者认为这么少的记录不需要快速滚动。 ????? 依据是android源代码,见FastScroller的常量声明: ??????? // Minimum number of pages to justify showing a fast scroll thumb? ????????? 以及: ??????? // Are there enough pages to require fast scroll? Recompute only if total count changes? ????????? 通篇查看了ListView及其超累AbsListView,都未找到自定义图片的设置接口。看来是没打算让开发者更改了。但是用户要求我们自定义这个图片。那只能用非常手段了。 经过分析发现,该图片是ListView超类AbsListView的一个成员mFastScroller对象的成员mThumbDrawable。这里mThumbDrawable是Drawable类型的。mFastScroller是FastScroller类型,这个类型比较麻烦,类的声明没有modifier,也就是default(package),只能供包内的类调用。 因此反射代码写的稍微麻烦一些: ??????? try {? ?
?????? ?android:layout_height="fill_parent"
?????? ?android:focusable="true"?/>
??????? ? private static int MIN_PAGES = 4;
??????? if (mItemCount != totalItemCount && visibleItemCount > 0) {?
?????????? ?? mItemCount = totalItemCount;?
????????? ??? mLongList = mItemCount / visibleItemCount >= MIN_PAGES;?
??????? }
??????????? ?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);?
????? }
详细解决方案
android中listView的式样
热度:77 发布时间:2016-05-01 20:23:51.0
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android RadioButton如何设置默认选中
- ListView 中加入 EditText后的焦点有关问题
- android 怎么重新设置锚点
- android 图片对象获取的有关问题
- android 关于服务连接的疑义
- android 怎么实现对view的放大和缩小
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java) 中文乱码的有关问题
- asp.net ListView 控件导出EXCEL档 出现一点有关问题身份证号后3位全部变成0,怎么解决哦
- C# ListView Item 焦点获取 有关问题 (winform) 控件高手别走。
- ListView,该怎么解决
- 必须在 ListView“ListView2”下指定项占位符
- ListView 控件怎么增加 编辑,删除,更新按钮
- listview 与 repeater 实施效率是不是一样高
- ListView+DataPager 分页性能怎么
- ASP listview 动态更改selectCommand,该怎么处理
- asp.net3.5 listview 如何样鼠标放在行上整行高亮显示 选择
- ListView+DataPager如何实现只取当前页记录并实现分页
- ListView 绑定ImageList 的 有关问题.
- android 动态设立控件高度
- Android test project 编译方法
- android 4.03启动出错,显示"Encryption Unsuccessful"该如何解决