改变ListView快速滑块的图像

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

    android:fastScrollEnabled="true" spa

  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();
  } 对象

相关文章
相关标签/搜索