2011-08-14 13 views
5

Mam listę widoków krajów w porządku innym niż alfabetyczny i zacząłem używać szybkiego przewijania. Chciałbym wyświetlać flagę kraju podczas przewijania za pomocą szybkiego przewijania, ale wygląda na to, że interfejsy API mają klasę FastScroll jako prywatne, więc nie mogę jej przesłonić.Jak wyświetlać niestandardowy kciuk podczas używania fastScrollEnabled

Czy ktoś jeszcze zaimplementował niestandardowy widok szybkiego przewijania?

Referencje: http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:fastScrollEnabled

Odpowiedz

10

W swojej ListView definicji XML, dodaj

android:fastScrollEnabled="true" 

lub w kodzie

listView.setFastScrollEnabled(true); 

utworzyć plik fastscroll_thumb.xml w RES/folderu rozciągliwej w następujący sposób:

<?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_pressed" /> 
    <item android:drawable="@drawable/fastscroll" /> 
</selector> 

W AndroidManifest.xml, ustawić niestandardowy motyw dla swojej aplikacji:

<application 
    android:theme="@style/ApplicationTheme" 
    ...> 

utworzyć folder wartości w folderze res. Tworzenie themes.xml pliki RES/wartości w następujący sposób:

<resources> 
    <style name="ApplicationTheme"> 
     <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb</item> 
    </style> 
</resources> 

Wreszcie upewnij się, że fastscroll.png i fastscroll_pressed.png istnieć w swojej rozciągliwej folderze

(opcjonalnie) Można również ustawić szybkie przewijanie zawsze widoczne podczas debugowania, jeśli chcesz

listView.setFastScrollAlwaysVisible(true); 

lub w XML

android:fastScrollAlwaysVisible="true" 
+1

uwaga na 'listView.setFastScrollAlwaysVisible', ponieważ jest dostępna dopiero od 11 poziomu interfejsu API –

Powiązane problemy