【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、テーマを定義する
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