2017-07-26 4 views
3

Ich habe einen Equalizer gemacht, um mit meiner App zu gehen, aber ich bin mir nicht sicher, wie ich den Daumen und die Fortschrittsfarbe der Suchleiste ändern kann. Es scheint standardmäßig pink zu sein und das passt nicht zur Ästhetik meiner App.wie SeekBar Farbe in Android ändern? (Programmatisch)

SeekBar seekBar = new SeekBar(this); 

     seekBar.setId(i); 

     seekBar.setLayoutParams(layoutParams); 
     seekBar.setMax(upperEqualizerBandLevel - lowerEqualizerBandLevel); 

     seekBar.setProgress(mEqualizer.getBandLevel(equalizerBandIndex)); 
     //seekBar.setBackgroundColor(Color.DKGRAY); 
     //seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY); 

Antwort

3

Um die Farbe des Seekbar Daumens zu ändern, einen neuen Stil in style.xml

<style name="SeekBarColor" 
    parent="Widget.AppCompat.SeekBar"> 
    <item name="colorAccent">@color/your_color</item> 
</style> 

schließlich im Layout erstellen:

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/SeekBarColor" /> 

das ändern Seekbar Fortschrittsfarbe, verwenden Sie diese in der Java-Klasse.

seekBar.getProgressDrawable().setColorFilter("yourcolor", PorterDuff.Mode.MULTIPLY); 

Beide werden für API> 16 funktionieren.

bearbeiten

Um SeekBar Daumen Farbe von Java-Code zu ändern.

seekBar.getProgressDrawable().setColorFilter(getResources().getCo‌​lor(R.color.your_color‌​), PorterDuff.Mode.SRC_ATOP); 
+0

Vielen Dank. Ich habe letzteres verwendet, da ich die Suchleisten für den Equalizer programmatisch gemacht habe. Die Fortschrittsfarbe ändert sich, aber ich kann den Daumen nicht ändern. Was kann ich dagegen tun? – Alpoe

+0

Der erste Teil der Antworten gibt an, wie die Farbe des Suchleisten-Daumens geändert wird. Ich habe diesen Code hinzugefügt, da er über einen größeren API-Bereich ausgeführt wird. – Abhi

+0

Überprüfen Sie die bearbeitete Antwort auf Java-Code, um die Farbe des Suchleisten-Daumens zu ändern (funktioniert nur für Android 5 und höher). – Abhi

0

Sie müssen Sie dieses

SeekBar newSeek = new SeekBar(this, null, R.style.YOUR_NEW_STYLE); 

SeekBar nennen, wo YOUR_NEW_STYLE die Farben des Seekbar definieren, die Sie wollen.

0

versuchen Sie dies:

seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.mcolor), PorterDuff.Mode.MULTIPLY); 
+0

das ändert nicht den Daumen –

-1
//seekBar.setBackgroundColor(Color.DKGRAY); 
    //seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY); 

Es gibt nur wenige Ansichten in Android SDK (ProgressBar ist ein weiteres Beispiel), in dem Sie Farbe mit grafischen Farbfilter ändern, anstatt Hintergrund/Vordergrund Quellenfarbe ändern .

Finden Sie .setColorFilter() Methode, liefern Sie Ihre Quelle Farbe mit einigen PorterDuff Filter, wie .Mode.MULTIPLY (je nachdem, welche Filter-Modus Sie am besten gefällt) und los geht's.

Beispiel:

seekBar.setColorFilter(new PorterDuffColorFilter(srcColor,PorterDuff.Mode.MULTIPLY));