2013-05-09 1 views
11

Ich habe den Standard seekbar in meiner Android App. Ich bemerkte, dass, wenn das thumb auf dem seekbar gehalten wird, es gelb wird. Stattdessen möchte ich, dass es blau wird, wenn es gehalten wird. Wie kann das gemacht werden? Ich entschuldige mich, wenn dies eine grundlegende Frage ist, bin ich neu in Android-Entwicklung. Vielen Dank.Wie ändert man die Farbe des Daumens in der Suchleiste?

Antwort

13

Wenn Sie nicht den Standard Daumen mögen, werden Sie Ihre eigenen Drawable erstellen müssen, die Sie dann den Daumen in Code mit so etwas wie festlegen können:

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

Oder Sie können festlegen, den Daumen in XML mit:

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

Die tatsächliche Drawable kann ein Bild, eine Form oder jede andere Art von Drawable sein, die Sie wünschen könnten. Wenn Sie möchten, dass der Daumen beim Drücken die Darstellung ändert, müssen Sie eine State List Drawable erstellen.

+0

Ich möchte den Standarddaumen verwenden. Ich möchte nur die Farbe ändern, in der es sich ändert, wenn es gehalten wird. –

+0

Leider ist die gedrückte Farbe des Standarddaumens ein Teil des Standarddaumens selbst. Wenn Sie es ändern möchten, müssen Sie es selbst implementieren. Ich fand die [non-holo Standardbilder hier] (https://github.com/android/platform_frameworks_base/tree/master/core/res/res), also sollten Sie in der Lage sein, diese zu verwenden, um einen guten Anfang zu bekommen. –

+0

Dies ist eine nützliche Technik für einige Situationen, aber es ist nicht unbedingt wahr, dass Sie * eine * eigene Drawable erstellen müssen. Siehe @ zavidovychs Antwort für API 16+. – LarsH

25

Bild verwenden Filter Farbe der Standardstatus Liste Drawables ändern (einschließlich 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); 

Verfahren getThumb ist seit API nur 16+ (Jelly Bean).

+0

zavidovych, kann dies in XML getan werden? – Brabbeldas

+7

Ich fand es besser in meinem Fall 'sb.getProgressDrawable() zu verwenden. SetColorFilter (getResources(). GetColor (R.color.my_color), PorterDuff.Mode.SRC_ATOP);' – CrimsonX

+1

@CrimsonX sollten Sie dies als Antwort hinzufügen. – MaSza

11

Kein zusätzliches Styling erforderlich. Android unterstützt es über XML. Fügen Sie einfach android: thumbTint = "@ color/yourColor" in Ihre Suchleiste ein.

Für z.

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

Wie sieht es mit api <21 aus? –

+2

@JohnShelley Dies funktioniert für alle API-Ebenen AppCompat Thema mit ... In styles.xml: '' In Layout: ' ' – Breeno

+0

@Breeno das funktioniert, aber nur für den Daumen (auf alten APIs). Wie würdest du den Rest der Suchleiste stylen? – Stan

Verwandte Themen