2017-07-26 159 views
3

我做了一個均衡器去我的應用程序,但我不知道我怎麼能改變seekbar的拇指和進度顏色。它默認情況下是粉紅色,並且不符合我的應用程序的美學。如何更改android中的SeekBar顏色? (以編程方式)

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

回答

3

要改變Seekbar拇指的顏色,在style.xml

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

最後在佈局中創建一個新的風格:

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

要改變Seekbar進階顏色,請在Java Class中使用此項。

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

這兩個都適用於API> 16。

編輯

要通過Java代碼改變搜索欄拇指顏色。

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

謝謝。我使用後者,因爲我以編程方式爲均衡器製作查找條。進度顏色改變,但我無法改變拇指。我能做些什麼嗎? – Alpoe

+0

答案的第一部分說明如何更改seekbar thumb的顏色。我已經添加了這個代碼,因爲它運行在更廣泛的API範圍內。 – Abhi

+0

檢查編輯的Java代碼答案以更改seekbar拇指顏色(僅適用於Android 5及更高版本)。 – Abhi

0

你需要調用搜索欄這樣

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

其中YOUR_NEW_STYLE將定義你想要的Seekbar的顏色。

0

試試這個:

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

這不會改變拇指 –

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

有在Android SDK中一些看法(進度是另一個例子)中,你必須使用圖形化的彩色濾光片來改變顏色,而不是改變背景/前景源顏色。

查找.setColorFilter()方法,用一些PorterDuff過濾器爲其提供源顏色,如.Mode.MULTIPLY(取決於您最喜歡的過濾器模式),然後去。

例子:

seekBar.setColorFilter(new PorterDuffColorFilter(srcColor,PorterDuff.Mode.MULTIPLY)); 
相關問題