2013-05-09 11 views
11

Mam domyślną seekbar w mojej aplikacji dla systemu Android. Zauważyłem, że po przetrzymaniu thumb na seekbar zmienia kolor na żółty. Zamiast tego chcę, aby zmieniło kolor na niebieski, gdy jest trzymane. Jak to zrobić? Przepraszam, jeśli to podstawowe pytanie, jestem nowy w rozwoju Androida. Dzięki.Jak zmienić kolor kciuka w przeglądarce?

Odpowiedz

13

Jeśli nie podoba ci się domyślny kciuk, trzeba będzie tworzyć własne Drawable, który można następnie ustawić kciuk w kodzie z czymś takim:

Drawable thumb = getResources().getDrawable(R.drawable.myThumb); 
SeekBar mSeekBar = (SeekBar) findViewById(R.id.mySeekBar); 
mSeekbar.setThumb(thumb); 

Albo można ustawić kciuk XML z:

<SeekBar 
    ... 
    android:thumb="@drawable/seek_thumb" /> 

Rzeczywiste Szuflady mogą być obrazem, kształtem lub dowolnym innym rodzajem szuflady, której można chcieć. Jeśli chcesz, aby kciuk zmieniał wygląd po naciśnięciu, zechcesz utworzyć State List Drawable.

+0

Chcę użyć domyślnego kciuka. Chcę tylko zmienić kolor, w którym się zmienia, gdy jest trzymany. –

+0

Niestety naciśnięty kolor domyślnego kciuka jest częścią domyślnego kciuka. Jeśli chcesz to zmienić, musisz to zaimplementować samodzielnie. Znalazłem tutaj [domyślne obrazy inne niż holo] (https://github.com/android/platform_frameworks_base/tree/master/core/res/res), więc powinieneś być w stanie je wykorzystać, aby uzyskać dobry start. –

+0

Jest to przydatna technika w niektórych sytuacjach, ale niekoniecznie jest prawdą, że * masz *, aby stworzyć własną Szufladę. Zobacz odpowiedź @ zavidovycha dla API 16+. – LarsH

25

filtry Użyj zdjęcia, aby zmienić kolor stan domyślny listy kanału alfa (łącznie SeekBar):

// Change seekbar color to green. 
    SeekBar sb = (SeekBar) findViewById(R.id.seekBar1); 
    sb.getProgressDrawable().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY); 
    sb.getThumb().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY); 

Sposób getThumb jest dostępny tylko od API 16+ (Jelly Bean).

+0

zavidovych, czy można to zrobić w xml? – Brabbeldas

+7

W moim przypadku lepiej było użyć 'sb.getProgressDrawable() .setColorFilter (getResources(). GetColor (R.color.my_color), PorterDuff.Mode.SRC_ATOP);' – CrimsonX

+1

@CrimsonX powinieneś dodać to jako odpowiedź. – MaSza

11

Nie wymaga dodatkowej stylizacji. Android obsługuje go przez xml. Wystarczy dodać android: thumbTint = "@ color/yourColor" w pasku wyszukiwania.

Na przykład.

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="100" 
    android:thumbTint="@color/red" 
    android:progress="0" /> 
+10

A co z api <21? –

+2

@JohnShelley To działa na wszystkich poziomach API korzystających AppCompat motyw ... W styles.xml: ' @ kolor/czerwony ' W układzie: ' ' – Breeno

+0

@ Breeno to działa, ale tylko dla kciuka (na starych API). Jak stylizowałbyś resztę poszukiwacza? – Stan