【Android】カスタムlistviewクイックスクロールバー

2677 ワード

http://blog.csdn.net/xyang81/article/details/17680333
 eoeでは反射により、FastScrlerオブジェクトのmThumbDrawable属性を動的に修正して、速いスライドブロックのアイコンを変更するスタンプが見られました.これも一つの実現形態ではありませんが、反射の効率が低いです.次に、スタイルを使ってアイコンをカスタマイズする方法を紹介します.
        FastScrler類のinit方法から、mThumbDrawableは現在のActivityテーマのAndroid.R.atr.fastScrrollThumbDrawable属性の値を取得することによって、Android.R.atr.fastrollum Drawableの属性を完全にカスタマイズできます.
1、テーマを定義する
<style name="ListViewFastScrollThumb" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
     <item name="android:fastScrollThumbDrawable">@drawable/ic_launcher</item>
</style>
2、現在のListView所在Activityアプリケーションのカスタムテーマ
<activity
    android:name="com.example.actionbardemo.MainActivity"
    android:label="@string/app_name"
    android:theme="@style/ListViewFastScrollThumb" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
3、検証
public class MainActivity extends ListActivity {

	private static final int[] ATTRS = new int[] {
        android.R.attr.fastScrollThumbDrawable,
    };
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Cheeses.sCheeseStrings));
		ImageView imageView = (ImageView) findViewById(R.id.fastScrollDrawable);
		
		Theme theme = getTheme();
		TypedArray a = theme.obtainStyledAttributes(ATTRS);
		Drawable drawable = a.getDrawable(0);
		imageView.setBackgroundDrawable(drawable);
	}
}
レイアウト:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/fastScrollDrawable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fastScrollEnabled="true" 
        />

</LinearLayout>
Demoダウンロード先:http://download.csdn.net/detail/xyang81/6788411