RecyclerView 26+使用手册

RecyclerView作为ListView的替代品,在26+版本开始支持快速滚动功能,无需依赖第三方库。然而在使用过程中存在一些坑,例如设置高度无效的问题。解决方案包括正确配置xml,如指定thumb_drawable和line_drawable,以及在低版本SDK中引用RecyclerView。当编译版本过高导致冲突时,可以通过单独引用recyclerview库并修改build.gradle配置,例如添加google()仓库,以兼容低版本。此外,升级Gradle可能导致问题,建议保持较低版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RecyclerView这个控件是为了替换Listview而产生的,但是这个控件在26之前版本都不支持快速滚动。如果需要使用需要借助于第三方比如FutureMind/recycler-fast-scrolltimusus/RecyclerView-FastScroll
在RecycerView 26+版本支持了这个特性,大家终于不用在导入第三方或者在使用listview了。下面介绍下怎么使用以及坑的存在
在以前RecyclerView xml添加如下代码

    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:fastScrollEnabled="true"
    app:fastScrollHorizontalThumbDrawable="@drawable/thumb_drawable"
    app:fastScrollHorizontalTrackDrawable="@drawable/line_drawable"
    app:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
    app:fastScrollVerticalTrackDrawable="@drawable/line_drawable"

上面的4个Drawable都必须设置,不然就会异常

下面是xml代码
thumb_drawable 滚动条样式

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">

            <size android:width="14dp" android:height="50dp"></size>
            <corners android:bottomLeftRadius="2dp" android:bottomRightRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="2dp" />
            <solid android:color="@android:color/holo_blue_light" />

        </shape>
    </item>

    <item>
        <shape android:shape="rectangle">

            <size android:width="14dp" android:height="50dp"></size>
            <corners android:bottomLeftRadius="2dp" android:bottomRightRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="2dp" />
            <solid android:color="@android:color/darker_gray" />

        </shape>
    </item>
</selector>

line_drawable 滚动条背景样式

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--<item-->
    <!--android:state_pressed="true"-->
    <!--android:drawable="@drawable/recycler_scroller_bg_line"/>-->

    <!--<item-->
    <!--android:drawable="@drawable/recycler_scroller_bg_line"/>-->

    <shape android:shape="rectangle">

        <size android:width="14dp"></size>
        <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
    </shape>
</selector>

这里有一个坑
size android:width="14dp" android:height="50dp"
设置的宽度会起作用,但是高度没用,这个下面再说怎么解决
这个显示效果如下 借用别人的图
这里写图片描述

如果是新项目到这里基本就结束了,但是很多应用到这了坑才刚开始。因为默认的recyclerview 26是在support26中,而且compileSdkVersion 高于23
我们需要的是这样的,编译版本不能高于23,原因网上很多大家都知道的
compileSdkVersion 23
buildToolsVersion "25.0.3"

所以我们需要处理下这个引用包,添加引用

compile 'com.android.support:support-v4:26.0.2'
compile 'com.android.support:recyclerview-v7:26.0.2'

这样就可以单独引用recyclerview了,不会和其他冲突。这里注意一下我写的版本是26.0.2,这里并没有错,多数人添加后编译应该是提示找不到的。
这里介绍下这个坑的原因,google近期发布的support都放在了自家的库里,如果大家Gradle是3.0+,会发现里面有allprojects {
repositories {

…..
google()
…..
}
}
低于3.0这个解析不了。这里如果是老项目不要升级Gradle,不要升级Gradle,不要升级Gradle。
这个配置网上也有很多
这里给一个最简单的
在声明配置里面添加

maven {
       url "https://dl.google.com/dl/android/maven2/"
      }

再次更新编译 一切就ok了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值