国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android ListView 滾動條的設置詳解及實例代碼

2019-12-12 03:38:25
字體:
來源:轉載
供稿:網友

Android ListView 滾動條的設置詳解

1.滾動條的屬性

android:scrollbarAlwaysDrawHorizontalTrack

設置是否始終顯示水平滾動條。這里用ScrollView、ListView測試均沒有效果。

android:scrollbarAlwaysDrawVerticalTrack

設置是否始終顯示垂直滾動條。這里用ScrollView、ListView測試均沒有效果。

android:scrollbarDefaultDelayBeforeFade

設置N毫秒后開始淡化,以毫秒為單位。

android:scrollbarFadeDuration

設置滾動條淡出效果(從有到慢慢的變淡直至消失)時間,以毫秒為單位。Android2.2中滾動條滾動完之后會消失,再滾動又會出來,在1.5、1.6版本里面會一直顯示著。

android:scrollbarSize

設置滾動條的寬度。

android:scrollbarStyle

設置滾動條的風格和位置。設置值:insideOverlay、insideInset、outsideOverlay、outsideInset。這里沒有試出太多效果,以下依次是outsideOverlay與outsideInset效果比較:

android:scrollbarThumbHorizontal

設置水平滾動條的drawable(如顏色)。

android:scrollbarThumbVertical

設置垂直滾動條的drawable(如顏色).

android:scrollbarTrackHorizontal

設置水平滾動條背景(軌跡)的色drawable(如顏色)

android:scrollbarTrackVertical

設置垂直滾動條背景(軌跡)的drawable注意直接設置顏色值如”android:color/white”將得出很難看的效果,甚至都不理解這個屬性了,這里可以參見ApiDemos里res/drawable/ scrollbar_vertical_thumb.xml和scrollbar_vertical_track.xml,設置代碼為:

android:scrollbarTrackVertical ="@drawable/scrollbar_vertical_track"

android:scrollbars

設置滾動條顯示。none(隱藏),horizontal(水平),vertical(垂直)。見下列代碼演示使用該屬性讓EditText內有滾動條。但是其他容器如LinearLayout設置了但是沒有效果

android:fastScrollEnabled

設置是否以滑塊的形式顯示(但是有時候會發現設置屬性無效,滾動ListView并未出現滑塊。原因是該屬性生效有最小記錄限制。當ListView記錄能夠在4屏以內顯示(也就是說滾動4頁)就不會出現滑塊。可能是api設計者認為這么少的記錄不需要快速滾動。)

2.問題注意

注意:可能是適配的原因,可能你設置了scrollbarSize看不多效果,但是如果你配置scrollbarThumbVertical使用就可以看到

<style name="global_listview_style">   <item name="android:background">@color/white</item>   <item name="android:cacheColorHint">#00000000</item>   <item name="android:divider">@color/white</item>   <item name="android:dividerHeight">10dip</item>   <item name="android:fadingEdge">none</item>   <item name="android:scrollbarSize">@dimen/DIMEN_4PX_DP</item>   <item name="android:scrollbarThumbVertical">@color/red_common</item>       <item name="android:fastScrollEnabled">true</item>   <item name="android:listSelector">#00000000</item> </style> 

3.如何修改滑塊的樣式

 依據是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); } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台中市| 仙居县| 黑水县| 随州市| 武宣县| 南京市| 固原市| 威海市| 霍城县| 温泉县| 黄陵县| 汾西县| 三门县| 河东区| 深水埗区| 皮山县| 鹤峰县| 长岭县| 平顺县| 天峨县| 盐边县| 吉水县| 灵武市| 万年县| 上饶县| 宁陵县| 同德县| 林甸县| 九龙坡区| 隆尧县| 黄山市| 民县| 射阳县| 讷河市| 忻州市| 彭山县| 色达县| 梧州市| 屯昌县| 库尔勒市| 毕节市|