月と年で区切られたイベントのリストがあります(2010年6月、2010年7月など)。
リストが本当に長いので、高速スクロールを有効にしたいと思います。
AndroidでListViews
の高速スクロールを有効にするにはどうすればよいですか?
ListActivityのonCreateメソッドで setFastScrollEnabled を使用します。
getListView().setFastScrollEnabled(true);
Xmlで Android:fastScrollEnabled を使用します。
<ListView
Android:id="@+id/listview_files"
...
Android:fastScrollEnabled="true" >
</ListView>
以下をお試しください
<?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">
これはリストビューです
<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"
/>
表示する独自のスクローラー画像を選択するなど、Fast-scrollerをカスタマイズできるようにするには、次のソースを使用することをお勧めします。
https://github.com/nolanlawson/CustomFastScrollViewDemo/
基本的に、リストビューアダプターはセクションインデクサーを実装する必要があります。このセクションインデクサーは、物事を複雑にしたくない場合や、リストの長さ全体を通して単純な高速スクロールを提供したくない場合に、非常に削除することができます。
Fastscrollerの直接のソースは次のとおりです。
このビューをリストビューの周りに配置し(xmlレイアウトファイルでこのビュー内にリストビューをネストします)、リストビューでAndroid:fastScrollEnabled = "true"を設定します。
また、以前の回答を確認することをお勧めします。 ListAdapterとSectionIndexerの高速スクロール表示の問題
私はあなたが達成したいものに似た何かをしたかった。 この投稿 にぶつかりました。これは、標準のAndroid AlphabetIndexerを使用せずに高速スクロールを実装するのに最適な方法です。
基本的に、アダプタにSectionIndexerインターフェイスを実装する必要があります。あなたの場合、現在の文字の代わりに、スクロールしながら現在の期間を表示します。
XmlでfastScrollEnabledを定義するか、必要に応じて実行時に設定します。
1) <ListView
...
Android:fastScrollEnabled="true" />
2) mListView.setFastScrollEnabled(true);
アルファベット順のインデックスを表示したい場合は、これを確認することをお勧めします。
https://github.com/andraskindler/quickscroll
最近のいくつかのアプリでこのスクロールパターンを使用しなければならなかったため、これは私が作成したライブラリプロジェクトです。使い方はかなり簡単です。上のgithubリンクのreadmeをご覧ください。
レイアウトファイル内:
Android:fastScrollEnabled = "true"
プログラムで高速スクロールバーを有効にできます。
getListView()。setFastScrollEnabled(true);