2013-06-27 12 views
11

Desidero personalizzare un listview con una barra di scorrimento veloce tangibile come Google Play Music App con linea verticale con immagine del pollice. Fornisce un modo semplice e veloce per scorrere con questa barra di scorrimento veloce tangibile. Ho provato a cercare la barra di scorrimento personalizzata in questo modo, ma non sono riuscito a trovarne alcuna con la barra di scorrimento veloce in listview. Mi aspetto l'uscita della barra di scorrimento come la figura seguente:Custom Listview Barra di scorrimento veloce in Android

enter image description here

La barra di scorrimento veloce esterno è contrassegnato in linea rossa. Ho trovato this post su StackOverflow, ma il codice nel collegamento non mi dà l'output previsto. Puoi aiutarmi a fare questo?

+0

u possono postare il tuo codice? – KOTIOS

risposta

36

Infine, ho trovato una soluzione. Funziona solo con livello di API 11 o superiori valori

/style.xml

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

</style> 

Applicare l'attività di questo tema come sottostante Codice:

  <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> 

attività di layout XML come qui di seguito codice:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rlScrollingPlayList" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/white" 
    android:orientation="vertical" > 

     <ListView 
      android:id="@+id/listView1" 
      android:layout_width="match_parent" 
      android:fastScrollEnabled="true" 
      android:fastScrollAlwaysVisible="true" 
      android:scrollbarStyle="outsideInset" 
      android:layout_height="match_parent" > 
     </ListView> 

</RelativeLayout> 

Resource file di immagine sono

enter image description hereenter image description hereenter here

veloce scorrimento del file di selezione pollice XML:

drawable/fast_thumb.xml

<?xml version="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> 

uscita finale come di seguito figura:

enter image description here

+0

Nel caso qualcuno debba rimuovere FastScrollTrackDrawable >> @ null Eftekhari

+0

risposta piacevole, tuttavia il selettore non funziona nel mio caso. –

2

così per Android livello di API < 11 c'è mod speciale

// 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.getDeclaredField("mFastScroller"); 
       f.setAccessible(true); 
       Object o = f.get(root.findViewById(R.id.beam_contact_listview)); 
       f = f.getType().getDeclaredField("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(); 
      } 
     } 

questo codice più soluzione per Android livello di API> = 11 = soluzione per tutti i livelli di API Android)

Problemi correlati