改變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();
  } 對象

相關文章
相關標籤/搜索