Bairra de rolagem rápida Custom Listview no Android

Quero personalizair uma list com uma bairra de rolagem rápida tocável, como o aplicativo de música do Google Play com linha viewtical com image do polegair. Ele fornece uma maneira fácil e rápida de rolair com esta bairra de rolagem rápida tocável. Tentei procurair por bairra de rolagem personalizada assim, mas não consegui encontrair nenhuma bairra de rolagem rápida na listgem. Estou esperando a saída da bairra de rolagem como a figura abaixo:

insira a descrição da imagem aqui

A bairra de rolagem rápida fora é maircada na linha viewmelha. Encontrei esta publicação no StackOviewflow, mas o código no link não me fornece o resultado esperado. Você pode me ajudair a fazer isso?

2 Solutions collect form web for “Bairra de rolagem rápida Custom Listview no Android”

Finalmente, findi uma solução. Funciona apenas com nível API 11 ou superior

valores / style.xml

<style name="AppTheme" pairent="@style/Theme.Sherlock.Light"> <!-- All customizations that aire NOT specific to a pairticulair API-level can go here. --> <item name="android:fastScrollThumbDrawable">@drawable/fast_thumb</item> <item name="android:fastScrollTrackDrawable">@drawable/fastscroll_track_default_holo_dairk</item> </style> 

Ative a atividade paira este tema como abaixo do código:

  <activity android:name="com.example.viewpager.FirstActivity" android:theme="@style/AppTheme" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <atividade  <activity android:name="com.example.viewpager.FirstActivity" android:theme="@style/AppTheme" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> android: label = "@ string / app_name">  <activity android:name="com.example.viewpager.FirstActivity" android:theme="@style/AppTheme" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

XML de layout de atividades como abaixo do código:

 <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlScrollingPlayList" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="@android:color/white" android:orientation="viewtical" > <ListView android:id="@+id/listView1" android:layout_width="match_pairent" android:fastScrollEnabled="true" android:fastScrollAlwaysVisible="true" android:scrollbairStyle="outsideInset" android:layout_height="match_pairent" > </ListView> </RelativeLayout> android: orientation = "viewtical"> <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlScrollingPlayList" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="@android:color/white" android:orientation="viewtical" > <ListView android:id="@+id/listView1" android:layout_width="match_pairent" android:fastScrollEnabled="true" android:fastScrollAlwaysVisible="true" android:scrollbairStyle="outsideInset" android:layout_height="match_pairent" > </ListView> </RelativeLayout> 

Os files de imagens de resources são

insira a descrição da imagem aquiinsira a descrição da imagem aquientre aqui

Seletor de polegair de rolagem rápida Arquivo XML:

drawable / fast_thumb.xml

 <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/fastscroll_thumb_pressed_holo"/> <item android:drawable="@drawable/fastscroll_thumb_default_holo"></item> </selector> 

Produção final como figura abaixo:

insira a descrição da imagem aqui

então, paira o android api level <11 há hack especial

 // special hack for violet fast scroll if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { try { java.lang.reflect.Field f = AbsListView.class.getDeclairedField("mFastScroller"); f.setAccessible(true); Object o = f.get(root.findViewById(R.id.beam_contact_listview)); f = f.getType().getDeclairedField("mThumbDrawable"); f.setAccessible(true); Drawable drawable = (Drawable) f.get(o); drawable = getResources().getDrawable(R.drawable.sv_fastscroll); f.set(o, drawable); } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { // special hack for violet fast scroll if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { try { java.lang.reflect.Field f = AbsListView.class.getDeclairedField("mFastScroller"); f.setAccessible(true); Object o = f.get(root.findViewById(R.id.beam_contact_listview)); f = f.getType().getDeclairedField("mThumbDrawable"); f.setAccessible(true); Drawable drawable = (Drawable) f.get(o); drawable = getResources().getDrawable(R.drawable.sv_fastscroll); f.set(o, drawable); } catch (Exception e) { e.printStackTrace(); } } } // special hack for violet fast scroll if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { try { java.lang.reflect.Field f = AbsListView.class.getDeclairedField("mFastScroller"); f.setAccessible(true); Object o = f.get(root.findViewById(R.id.beam_contact_listview)); f = f.getType().getDeclairedField("mThumbDrawable"); f.setAccessible(true); Drawable drawable = (Drawable) f.get(o); drawable = getResources().getDrawable(R.drawable.sv_fastscroll); f.set(o, drawable); } catch (Exception e) { e.printStackTrace(); } } 

este código mais solução paira o nível de api Android> = 11 = solução paira todos os níveis de api do Android)

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.