使用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 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ListView 中加入 EditText后的焦点有关问题
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- asp.net ListView 控件导出EXCEL档 出现一点有关问题身份证号后3位全部变成0,怎么解决哦
- c#c++,android,ios(iphone),php,java视屏课程 散分
- C# ListView Item 焦点获取 有关问题 (winform) 控件高手别走。
- .Net 控件: ListView + Treeview + CheckBox,该如何处理
- ListView 怎么设置控件某行的高度