RecyclerView 26+使用手册

来源:互联网 发布:c语言中的英文字母 编辑:程序博客网 时间:2024/05/21 13:57

RecyclerView这个控件是为了替换Listview而产生的,但是这个控件在26之前版本都不支持快速滚动。如果需要使用需要借助于第三方比如FutureMind/recycler-fast-scroll或timusus/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了