改变ListView快速滑块的图像

ListView组件并没有提供修改快速滑块图像的API,因此不能直接修改快速滑块图像,所以通过反射技术修改快速滑块的图像    

    android:fastScrollEnabled="true"

  ListView lv=(ListView)findViewById(R.id.lv);
  // 获取FastScroller对象
  try {
   Field field = AbsListView.class.getDeclaredField("mFastScroller");
   field.setAccessible(true);
   Object obj = field.get(lv);
   // 获取FastScroller.mTumbDrawable变量的Field对象
   field = field.getType().getDeclaredField("mThumbDrawable");
   field.setAccessible(true);
   // 获取FastScroller.mThumbDrawable变量的值
   Drawable drawable = (Drawable) field.get(obj);
   // 装载新的快速滑块图像
   drawable = getResources().getDrawable(R.drawable.ic_launcher);
   // 重新设置快速滑块的图像
   field.set(obj, drawable);
  } catch (SecurityException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (NoSuchFieldException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

你可能感兴趣的:(改变ListView快速滑块的图像)