2017-07-26 113 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)); 
相关问题