Android 修改ListView快速滚动条的bar

站长公众号

前言

最近需要使用修改ListView快速滚动条的bar,ListView是可以默认支持的,但就是太丑了,需要定制一下。

下面就记录一下自己使用的方法。

好记性不如烂笔头

正文

本文并非原创,感谢网友分享。

使用自定义style

第一步

布局中的ListView需要添加如下配置:

    android:fastScrollEnabled="true"
    android:fastScrollAlwaysVisible="true"

附上我用的完整的ListView配置(仅供参考)

    <ListView
        android:id="@+id/media_item_lv_listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@drawable/item_divider_line"
        android:dividerHeight="1dp"
        android:fadeScrollbars="false"
        android:fadingEdge="none"
        android:fastScrollEnabled="true"
        android:fastScrollAlwaysVisible="true"
        android:listSelector="@android:color/transparent"
        android:overScrollMode="never"
        android:scrollbars="vertical" />
第二步

如果你的AndroidManifest.xml引用的主题style是这样的:

    <style name="default_theme" parent="@android:style/Theme.NoTitleBar">
        <item name="android:windowDisablePreview">true</item>
    </style>

只需要添加:

    <item name="android:fastScrollThumbDrawable">@drawable/list_scroll</item>
    <item name="android:fastScrollTrackDrawable">@null</item>

变成,附上完整的:

    <style name="default_theme" parent="@android:style/Theme.NoTitleBar">
        <item name="android:windowDisablePreview">true</item>
        <item name="android:fastScrollThumbDrawable">@drawable/list_scroll</item>
        <item name="android:fastScrollTrackDrawable">@null</item>
    </style>

list_scroll.png是我们设置的滚动条bar

运行后就可以看到想要的效果。

使用反射

我的Android 版本: Android P(28)

我试过网上说的反射修改滚动bar,但报异常了。提示:

 AndroidRuntime: java.lang.RuntimeException: java.lang.NoSuchFieldException: No field mFastScroller in class Landroid/widget/AbsListView; (declaration of 'android.widget.AbsListView' appears in /system/framework/framework.jar!classes2.dex)

由于项目急,暂时用了第一种,这个就先挖个坑,后续补上。

至于代码,由于有问题,我就不补上了。

参考文章

  1. 定制Android ListView 快速滚动的滚动条-fast scroll bar thumb

站长公众号
版权声明:125la.com站长 发表于 2021年9月22日 下午6:51 。
转载请注明: Android 修改ListView快速滚动条的bar | 125啦读书导航

相关文章

站长公众号

暂无评论

暂无评论...