如何更改android中的SeekBar颜色? (以编程方式)
问题描述:
我做了一个均衡器去我的应用程序,但我不知道我怎么能改变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);
答
要改变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().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);
答
你需要调用搜索栏这样
SeekBar newSeek = new SeekBar(this, null, R.style.YOUR_NEW_STYLE);
其中YOUR_NEW_STYLE
将定义你想要的Seekbar
的颜色。
答
试试这个:
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.mcolor), PorterDuff.Mode.MULTIPLY);
+0
这不会改变拇指 –
答
//seekBar.setBackgroundColor(Color.DKGRAY);
//seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY);
有在Android SDK中一些看法(进度是另一个例子)中,你必须使用图形化的彩色滤光片来改变颜色,而不是改变背景/前景源颜色。
查找.setColorFilter()
方法,用一些PorterDuff过滤器为其提供源颜色,如.Mode.MULTIPLY
(取决于您最喜欢的过滤器模式),然后去。
例子:
seekBar.setColorFilter(new PorterDuffColorFilter(srcColor,PorterDuff.Mode.MULTIPLY));
谢谢。我使用后者,因为我以编程方式为均衡器制作查找条。进度颜色改变,但我无法改变拇指。我能做些什么吗? – Alpoe
答案的第一部分说明如何更改seekbar thumb的颜色。我已经添加了这个代码,因为它运行在更广泛的API范围内。 – Abhi
检查编辑的Java代码答案以更改seekbar拇指颜色(仅适用于Android 5及更高版本)。 – Abhi