使用 Support Library 26,我们可以轻松地为 RecyclerView 启用快速滚动。让我们开始吧!
让我们一个一个地检查每个属性:
-
fastScrollEnabled : 启用快速滚动的布尔值。将此设置为 true 将需要我们提供以下四个
属性。
-
fastScrollHorizontalThumbDrawable :一个 StateListDrawable 将用于绘制可以拖过
水平轴。
-
fastScrollHorizontalTrackDrawable :一个 StateListDrawable 用于绘制代表滚动条的线条
水平轴。
-
fastScrollVerticalThumbDrawable:一个 StateListDrawable,用于绘制可在垂直轴上拖动的拇指。
-
fastScrollVerticalTrackDrawable :一个 StateListDrawable 用于绘制代表滚动条的线条
纵轴。
在 build.gradle 中添加
dependencies {
....
compile 'com.android.support:design:26.0.1'
compile 'com.android.support:recyclerview-v7:26.0.1'
....
}
由于 Support Library 26 现在已移至 Google 的 maven 存储库,让我们将其包含在我们的项目级别 build.gradle
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
activity_main.xml
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:fastScrollEnabled="true"
app:fastScrollHorizontalThumbDrawable="@drawable/thumb_drawable"
app:fastScrollHorizontalTrackDrawable="@drawable/line_drawable"
app:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
app:fastScrollVerticalTrackDrawable="@drawable/line_drawable">
</android.support.v7.widget.RecyclerView>
在你的drawable文件夹中添加以下四个xml文件,
line_drawable.xml
<?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/line"/>
<item
android:drawable="@drawable/line"/>
</selector>
line.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/darker_gray" />
<padding
android:top="10dp"
android:left="10dp"
android:right="10dp"
android:bottom="10dp"/>
</shape>
thumb_drawable.xml
<?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/thumb"/>
<item
android:drawable="@drawable/thumb"/>
</selector>
thumb.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="44dp"
android:topRightRadius="44dp"
android:bottomLeftRadius="44dp" />
<padding
android:paddingLeft="22dp"
android:paddingRight="22dp" />
<solid android:color="@color/colorPrimaryDark" />
</shape>