RecyclerView中的滚动条颜色

时间:2016-02-15 00:37:33

标签: android android-recyclerview android-scrollbar

如何在recyclerView中更改滚动条的颜色?

我有滚动条,但我想改变它的颜色。 我的recyclerView是这样的:

 <android.support.v7.widget.RecyclerView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:id="@+id/recyclerView"
   android:layout_below="@id/my_toolbar"
   android:layout_above="@+id/progressBar"
   android:scrollbars="vertical"
   />

3 个答案:

答案 0 :(得分:45)

您可以通过在Recyclerview

中包含以下代码行来完成此操作

android:scrollbarThumbVertical="@drawable/yoursdrawablefile

我的案例中的drawable文件是:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient android:startColor="#000" android:endColor="#000"
        android:angle="45"/>
    <corners android:radius="6dp" />
</shape>

答案 1 :(得分:14)

如果您想进一步设置滚动条的样式,请在drawable文件夹中创建两个可绘制的资源文件,如1. scrollbar_track和2. scrollbar_thumb

<强> scrollbar_track.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="0"
        android:endColor="#9BA3C5"
        android:startColor="#8388A4" />
        <corners android:radius="6dp" />
</shape>

<强> scrollbar_thumb.xml

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

    <gradient
        android:angle="0"
        android:endColor="#b20111"
        android:startColor="#cf1d2d" />

    <corners android:radius="6dp" />

</shape> 

现在,在styles.xml文件中创建一个名为 scrollbar_style 的样式:

<style name="scrollbar_style">
    <item name="android:scrollbarAlwaysDrawVerticalTrack">true</item>
    <item name="android:scrollbarStyle">outsideOverlay</item>
    <item name="android:scrollbars">vertical</item>
    <item name="android:fadeScrollbars">true</item>
    <item name="android:scrollbarThumbVertical">@drawable/scrollbar_thumb</item>
    <item name="android:scrollbarTrackVertical">@drawable/scrollbar_track</item>
    <item name="android:scrollbarSize">8dp</item>
    <item name="android:scrollbarFadeDuration">800</item>
    <item name="android:scrollbarDefaultDelayBeforeFade">500</item>
 </style>

最后,将此样式应用于recyclerview中的滚动条,添加
style="@style/scrollbar_style"
到您的recyclerview。

在你的情况下:

<android.support.v7.widget.RecyclerView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:id="@+id/recyclerView"
  style="@style/scrollbar_style"
  android:layout_below="@id/my_toolbar"
  android:layout_above="@+id/progressBar"
  android:scrollbars="vertical"
 />

答案 2 :(得分:1)

如果您需要在运行时更改颜色,这就是方法。

<=

这些方法是在View类中定义的,因此相同的printcible应该适用于ScrollView和ListView等其他视图。