Android ListView 滾動(dòng)條的設(shè)置詳解及實(shí)例代碼
Android ListView 滾動(dòng)條的設(shè)置詳解
1.滾動(dòng)條的屬性
android:scrollbarAlwaysDrawHorizontalTrack
設(shè)置是否始終顯示水平滾動(dòng)條。這里用ScrollView、ListView測(cè)試均沒(méi)有效果。
android:scrollbarAlwaysDrawVerticalTrack
設(shè)置是否始終顯示垂直滾動(dòng)條。這里用ScrollView、ListView測(cè)試均沒(méi)有效果。
android:scrollbarDefaultDelayBeforeFade
設(shè)置N毫秒后開(kāi)始淡化,以毫秒為單位。
android:scrollbarFadeDuration
設(shè)置滾動(dòng)條淡出效果(從有到慢慢的變淡直至消失)時(shí)間,以毫秒為單位。Android2.2中滾動(dòng)條滾動(dòng)完之后會(huì)消失,再滾動(dòng)又會(huì)出來(lái),在1.5、1.6版本里面會(huì)一直顯示著。
android:scrollbarSize
設(shè)置滾動(dòng)條的寬度。
android:scrollbarStyle
設(shè)置滾動(dòng)條的風(fēng)格和位置。設(shè)置值:insideOverlay、insideInset、outsideOverlay、outsideInset。這里沒(méi)有試出太多效果,以下依次是outsideOverlay與outsideInset效果比較:
android:scrollbarThumbHorizontal
設(shè)置水平滾動(dòng)條的drawable(如顏色)。
android:scrollbarThumbVertical
設(shè)置垂直滾動(dòng)條的drawable(如顏色).
android:scrollbarTrackHorizontal
設(shè)置水平滾動(dòng)條背景(軌跡)的色drawable(如顏色)
android:scrollbarTrackVertical
設(shè)置垂直滾動(dòng)條背景(軌跡)的drawable注意直接設(shè)置顏色值如”android:color/white”將得出很難看的效果,甚至都不理解這個(gè)屬性了,這里可以參見(jiàn)ApiDemos里res/drawable/ scrollbar_vertical_thumb.xml和scrollbar_vertical_track.xml,設(shè)置代碼為:
android:scrollbarTrackVertical ="@drawable/scrollbar_vertical_track"
android:scrollbars
設(shè)置滾動(dòng)條顯示。none(隱藏),horizontal(水平),vertical(垂直)。見(jiàn)下列代碼演示使用該屬性讓EditText內(nèi)有滾動(dòng)條。但是其他容器如LinearLayout設(shè)置了但是沒(méi)有效果
android:fastScrollEnabled
設(shè)置是否以滑塊的形式顯示(但是有時(shí)候會(huì)發(fā)現(xiàn)設(shè)置屬性無(wú)效,滾動(dòng)ListView并未出現(xiàn)滑塊。原因是該屬性生效有最小記錄限制。當(dāng)ListView記錄能夠在4屏以內(nèi)顯示(也就是說(shuō)滾動(dòng)4頁(yè))就不會(huì)出現(xiàn)滑塊??赡苁莂pi設(shè)計(jì)者認(rèn)為這么少的記錄不需要快速滾動(dòng)。)
2.問(wèn)題注意
注意:可能是適配的原因,可能你設(shè)置了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.如何修改滑塊的樣式
依據(jù)是Android源代碼,見(jiàn)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,都未找到自定義圖片的設(shè)置接口??磥?lái)是沒(méi)打算讓開(kāi)發(fā)者更改了。但是用戶要求我們自定義這個(gè)圖片。那只能用非常手段了。
經(jīng)過(guò)分析發(fā)現(xiàn),該圖片是ListView超類AbsListView的一個(gè)成員mFastScroller對(duì)象的成員mThumbDrawable。這里mThumbDrawable是Drawable類型的。mFastScroller是FastScroller類型,這個(gè)類型比較麻煩,類的聲明沒(méi)有modifier,也就是default(package),只能供包內(nèi)的類調(diào)用。
因此反射代碼寫(xiě)的稍微麻煩一些:
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); }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android實(shí)現(xiàn)拍照截取和相冊(cè)圖片截取
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)拍照截取和相冊(cè)獲取圖片截取,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12Android貝塞爾曲線實(shí)現(xiàn)消息拖拽消失
這篇文章主要為大家詳細(xì)介紹了Android貝塞爾曲線實(shí)現(xiàn)消息拖拽消失,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01Flutter使用texture_rgba_renderer實(shí)現(xiàn)桌面端渲染視頻詳解
這篇文章主要為大家介紹了Flutter如何使用texture_rgba_renderer實(shí)現(xiàn)桌面端渲染視頻,文中的示例代碼講解詳細(xì),需要的可以了解一下2023-07-07Android Studio 運(yùn)行時(shí)出現(xiàn)的警告信息解決辦法
這篇文章主要介紹了Android Studio 運(yùn)行時(shí)出現(xiàn)的警告信息解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06Android編程實(shí)現(xiàn)攝像頭臨摹效果的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)攝像頭臨摹效果的方法,涉及Android權(quán)限控制、布局及攝像頭功能調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09android實(shí)現(xiàn)在圖標(biāo)上顯示數(shù)字
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)在圖標(biāo)上顯示數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04