我的Android进阶之旅------>如何为ListView组件加上快速滑块以及修改快速滑块图像

使用布局文件需要将android:fastScrollEnabled="true" ,如下代码所示:

    <ListView 
        android:id="@+id/listView" android:layout_width="fill_parent" 
    	android:layout_height="fill_parent" android:fastScrollEnabled="true" 
    	android:focusable="true"
        />
使用Java代码则需要调用 AbsListView .setFastScrollEnabled( boolean enabled)方法。如下代码所示:

     ListView listView=new ListView(getApplicationContext());
     listView.setFastScrollEnabled(true);

ListView组件并没有提供修改快速滑块图像的API,因此不能直接修改快速滑块图像。但是可以通过反射技术修改快速滑块图像,代码如下:

                    //FastScroller.mThumbDrawable变量保存了快速滑块图像
		    //首先要通过AbsListView.mFastScroller获取FastScroller对象
		    Field field = AbsListView.class.getDeclaredField("mFastScroller"); 
		    field.setAccessible(true); 
		    Object object=field.get(listView); 
		    //获取FastScroller.mThumbDrawable变量的对象
		    field=field.getType().getDeclaredField("mThumbDrawable"); 
		    field.setAccessible(true); 
		    //获取FastScroller.mThumbDrawable变量的值
		    Drawable drawable=(Drawable) field.get(object); 
		    //装载新的快速滑块对象
		    drawable=getResources().getDrawable(R.drawable.img); 
		    //重新设置快速滑块对象
		    field.set(object,drawable);
                    //设置最小页数
		    field .setAccessible(true);
		    Field minPages =object.getClass().getDeclaredField("MIN_PAGES");
		    minPages.setAccessible(true);
		    minPages.set(object,1);
 

 




 


                            ====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

====================================================================================

 


你可能感兴趣的:(我的Android进阶之旅------>如何为ListView组件加上快速滑块以及修改快速滑块图像)