2016-02-15 26 views
20

Kaydırma çubuğumun rengini bir geri dönüştürücüde nasıl değiştirebilirim?RecyclerView öğesinde kaydırma çubuğu rengi

Kaydırma çubuğum var ama rengini değiştirmek istiyorum.

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

cevap

31

Sen Recyclerview içinde aşağıdaki kod satırını ekleyerek bunu yapabilirsiniz benim durumumda çekilebilir dosyasıdır

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> 
+0

çalışıyor, çok teşekkürler! – Yass

+0

welcome ........ – Naresh

+0

harika !!!!!!!! –

7
Benim recyclerView bu gibi

Kaydırma çubuklarınızı daha fazla stil oluşturmak isterseniz, çizilebilir klasörünüzde iki adet çizilebilir kaynak dosyası oluşturun. 1. scrollbar_track ve 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

Şimdi
<?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> 

, gibi styles.xml dosyasında scrollbar_style adında bir stil oluşturmak:

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

Son olarak,, sizin recyclerview içinde kaydırma için bu stil uygulamak için recyclerview için
style="@style/scrollbar_style"
ekleyin. Senin durumunda

:

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

teşekkürler kaaloraat, o da çalışıyor ama yukarıdaki çözüm yeni başlayanlar için daha iyidir. – Yass

+0

Tamam. O kadar da karmaşık değil. – kaaloraat

+0

İyi detaylı cevap! –

1

Çalışma zamanı içinde rengini değiştirmek gerekiyorsa, bu bir yoldur. Aynı prensibe uygun scrollview ve ListView gibi diğer görüşlerin çalışması gerekir böylece

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); 
    } 
} 

Bu yöntemler, Görünüm sınıfında tanımlanır.

+0

Merhaba, sadece başparmak rengini değiştirir, ancak scrollbar parça rengini değiştirebilir miyiz? – Shruti

İlgili konular