2012-02-21 2 views
45

У меня есть список событий, которые отделяются по месяцам и годам (июнь 2010, июль 2010 и т. Д.)Как использовать быстрый прокрутка в android?

Я хочу включить быструю прокрутку, потому что список действительно длинный.

Как включить быстрый прокрутка на ListViews в Android?

ответ

95

В OnCreate метод использования ListActivity setFastScrollEnabled:

getListView().setFastScrollEnabled(true); 
+42

И обратите внимание: оно будет отображаться только в том случае, если общая высота списка составляет 4x или больше, чем видимая высота списка. –

+1

@mice: Есть ли какая-либо документация относительно вашего комментария? –

+2

Вероятно, не задокументировано, условие найдено в исходном коде. –

60

Использование android:fastScrollEnabled в вашем XML:

<ListView 
    android:id="@+id/listview_files" 
    ... 
    android:fastScrollEnabled="true" > 
</ListView> 
4

Если вы хотите, чтобы иметь возможность настроить Fast-скроллер, как выбор ваш что я рекомендую использовать этот источник:

https://github.com/nolanlawson/CustomFastScrollViewDemo/

В принципе, вашему адаптеру listview придется реализовать sectionindexer. Этот индексатор раздела может быть очень разделен, если вы не хотите усложнять ситуацию и обеспечить простой быстрый просмотр, хотя и всю длину списка.

Непосредственным источником для fastscroller здесь:

https://github.com/nolanlawson/CustomFastScrollViewDemo/blob/master/src/com/nolanlawson/customfastscrollviewdemo/CustomFastScrollView.java

Поместите этот вид вокруг ListView (гнездо ваш ListView внутри этой точки зрения в файле макета XML) и установить андроид: fastScrollEnabled = «истина» в вашем списке.

Вы также можете проверить предыдущий ответ: Fast Scroll display problem with ListAdapter and SectionIndexer

0

Если вы хотите, чтобы показать алфавитные индексации, вы можете захотеть, чтобы проверить это:

https://github.com/andraskindler/quickscroll

Это проект библиотеки Я создал, потому что мне пришлось использовать этот шаблон прокрутки в нескольких последних приложениях, поэтому я думал, что другие могут быть заинтересованы в нем. Он довольно прост в использовании, см. Readme в приведенной выше ссылке github.

5

Попробуйте следующее

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 

    <style name="listviewfastscrollstyle" parent="android:Theme"> 
     <item name="android:fastScrollTrackDrawable">@drawable/listselector</item> 
     <item name="android:fastScrollThumbDrawable">@drawable/listselector</item> 
    </style> 

</resources> 

в манифесте установить стиль, как это:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/CustomTheme"> 

это ListView

<ExpandableListView 
     android:id="@android:id/list1" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:drawSelectorOnTop="false" 
     android:fastScrollAlwaysVisible="true" 
     android:fastScrollEnabled="true" 
     /> 
+0

Хорошо, я могу сделать быстрый свиток по дате, я имею в виду, что при выполнении быстрой прокрутки я могу отобразить дату записи, как в истории звонков – Rakshi

1

Я хотел сделать что-то подобное тому, что вы хотел достичь. Я столкнулся с this post. Это отличный способ быстро выполнить прокрутку без использования стандартного Android AlphabetIndexer, который требует курсора, который у вас может не всегда быть.

В принципе, вам необходимо реализовать интерфейс SectionIndexer в вашем адаптере. В вашем случае вместо текущей буквы вы будете показывать текущий период при прокрутке.

0

Определите fastScrollEnabled в вашем xml или установите его во время выполнения, когда это необходимо.

1) <ListView 
     ... 
     android:fastScrollEnabled="true" /> 

2) mListView.setFastScrollEnabled(true); 
0

В Layout File:

андроида: fastScrollEnabled = "истинный"

вы можете программно Включение быстрого полосы прокрутки:.

getListView() setFastScrollEnabled (правда);