Android ListView的滾動條樣式
使用ListView FastScroller,預設滑塊和自定義滑塊圖片的樣子如下兩圖:
設定快速滾動屬性很容易,只需在佈局的xml檔案裡設定屬性即可:
<ListView android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fastScrollEnabled="true"
android:focusable="true" />
但是有時候會發現設定屬性無效,滾動ListView並未出現滑塊。原因是該屬性生效有最小記錄限制。當ListView記錄能夠在4屏以內顯示(也就是說滾動4頁)就不會出現滑塊。可能是api設計者認為這麼少的記錄不需要快速滾動。
依據是android原始碼,見FastScroller的常量宣告:
// Minimum number of pages to justify showing a fast scroll thumb
private static int MIN_PAGES = 4;
以及:
// Are there enough pages to require fast scroll? Recompute only if total count changes
if (mItemCount != totalItemCount && visibleItemCount > 0) {
mItemCount = totalItemCount;
mLongList = mItemCount / visibleItemCount >= MIN_PAGES;
}
通篇檢視了ListView及其超累AbsListView,都未找到自定義圖片的設定介面。看來是沒打算讓開發者更改了。但是使用者要求我們自定義這個圖片。那隻能用非常手段了。
經過分析發現,該圖片是ListView超類AbsListView的一個成員mFastScroller物件的成員mThumbDrawable。這裡mThumbDrawable是Drawable型別的。mFastScroller是FastScroller型別,這個型別比較麻煩,類的宣告沒有modifier,也就是default(package),只能供包內的類呼叫。
因此反射程式碼寫的稍微麻煩一些:
try {
Field f = AbsListView.class.getDeclaredField("mFastScroller");
f.setAccessible(true);
Object o=f.get(listView);
f=f.getType().getDeclaredField("mThumbDrawable");
f.setAccessible(true);
Drawable drawable=(Drawable) f.get(o);
drawable=getResources().getDrawable(R.drawable.icon);
f.set(o,drawable);
Toast.makeText(this, f.getType().getName(), 1000).show();
} catch (Exception e) {
throw new RuntimeException(e);
}
相關文章
- div滾動條樣式,水平滾動
- 超美的滾動條樣式
- 純css美化滾動條樣式CSS
- css 改變scroll滾動條的樣式CSS
- ListView自動滾到最後一條View
- Android ListView元件樣式AndroidView元件
- 自定義瀏覽器滾動條樣式瀏覽器
- css實現修改預設滾動條樣式CSS
- 短視訊平臺搭建,自定義滾動條的樣式
- android 用ListView實現表格樣式AndroidView
- 直播平臺開發,滾動條樣式的修改和更換
- android之豎直滾動控制元件-ListViewAndroid控制元件View
- 直播app系統原始碼,css優化滾動條樣式APP原始碼CSS優化
- css3自定義滾動條樣式程式碼例項CSSS3
- 設定谷歌瀏覽器其滾動條樣式程式碼谷歌瀏覽器
- 設定谷歌瀏覽器視窗右側滾動條的樣式谷歌瀏覽器
- android 讓 TextView 自帶滾動條AndroidTextView
- android listview 滾動時非同步載入圖片的問題AndroidView非同步
- 使用 flutter 的ListView實現滾動列表FlutterView
- echarts圖表漸變色 、及X軸滾動條樣式處理Echarts
- Android——仿淘寶頭條垂直滾動廣告Android
- Android中ListView滾動時上下邊界的那一抹色彩AndroidView
- Flutter 滾動控制元件篇-->ListViewFlutter控制元件View
- Flutter可滾動Widgets-ListViewFlutterView
- Flutter滾動型容器元件 - ListView篇Flutter元件View
- 平滑的滾動listview到一個指定位View
- 隱藏滾動條保留滾動效果
- Android控制之垂直滾動廣告條ViewFLipper解析AndroidView
- 隨滾動條移動的層
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- 一種統計ListView滾動距離的方法View
- css隱藏滾動條並可以滾動CSS
- scrollable滾動條向下滾動至底部
- javascript基礎(樣式的操作,瀏覽器相容樣式操作,其他的樣式相關屬性,滾動的樣式)(三十)JavaScript瀏覽器
- CSS滾動條美化CSS
- 自定義滾動條
- list滾動條向下
- 移動端div跟隨滾動條滾動(自制