Intereting Posts

Цвет полосы прокрутки в RecyclerView

Как изменить цвет полосы прокрутки в 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" /> 

Solutions Collecting From Web of "Цвет полосы прокрутки в RecyclerView"

Вы можете сделать это, включив следующую строку кода в Recyclerview

android:scrollbarThumbVertical="@drawable/yoursdrawablefile

Обращаемый файл в моем случае:

 <?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. 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> 

Теперь создайте стиль с именем scrollbar_style в styles.xml как:

 <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" /> 

Если вам нужно изменить цвет во время выполнения, это так.

 import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.support.annotation.ColorInt; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; /** * Created on 22.3.2016. * * @author Bojan Kseneman * @description A recycler view that will draw the scroll bar with a different color */ public class CustomScrollBarRecyclerView extends RecyclerView { private int scrollBarColor = Color.RED; public CustomScrollBarRecyclerView(Context context) { super(context); } public CustomScrollBarRecyclerView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomScrollBarRecyclerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void setScrollBarColor(@ColorInt int scrollBarColor) { this.scrollBarColor = scrollBarColor; } /** * Called by Android {@link android.view.View#onDrawScrollBars(Canvas)} **/ protected void onDrawHorizontalScrollBar(Canvas canvas, Drawable scrollBar, int l, int t, int r, int b) { scrollBar.setColorFilter(scrollBarColor, PorterDuff.Mode.SRC_ATOP); scrollBar.setBounds(l, t, r, b); scrollBar.draw(canvas); } /** * Called by Android {@link android.view.View#onDrawScrollBars(Canvas)} **/ protected void onDrawVerticalScrollBar(Canvas canvas, Drawable scrollBar, int l, int t, int r, int b) { scrollBar.setColorFilter(scrollBarColor, PorterDuff.Mode.SRC_ATOP); scrollBar.setBounds(l, t, r, b); scrollBar.draw(canvas); } } 

Эти методы определены в классе View, поэтому тот же самый принц должен работать с другими представлениями, такими как ScrollView и ListView.