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