我制作了均衡器以配合我的应用程序,但我不确定如何更改搜索栏的拇指和进度颜色。它默认为粉红色,并不适合我应用的美学。
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);
答案 0 :(得分:6)
要更改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&gt; 16。
修改强>
通过Java代码更改SeekBar拇指颜色。
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);
答案 1 :(得分:2)
虽然使用样式是一个好主意,但如果你想以编程方式分配颜色,它并没有提供太大的灵活性我建议:
//for the progress
seekBar.getProgressDrawable().setColorFilter(mThemeColor,PorterDuff.Mode.SRC_ATOP);
//for the thumb handle
seekBar.getThumb().setColorFilter(mThemeColor, PorterDuff.Mode.SRC_ATOP);
答案 2 :(得分:0)
你需要像这样叫你的搜索栏
SeekBar newSeek = new SeekBar(this, null, R.style.YOUR_NEW_STYLE);
其中YOUR_NEW_STYLE
将定义您想要的Seekbar
的颜色。
答案 3 :(得分:0)
试试这个:
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.mcolor), PorterDuff.Mode.MULTIPLY);
答案 4 :(得分:0)
您可以像这样通过编程方式更改搜寻栏的拇指和进度颜色:
seekBar.getProgressDrawable().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
答案 5 :(得分:0)
您可以通过代码轻松更改它,
例如:
seekbar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(#000000)));
或
seekbar.setProgressTintList(ColorStateList.valueOf(Color.RED));
希望将来对某人有帮助。
答案 6 :(得分:0)
多一点桃花般的答案
public static void setSeekBarColor(SeekBar seekBar, int color) {
seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}
答案 7 :(得分:-1)
//seekBar.setBackgroundColor(Color.DKGRAY);
//seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY);
Android SDK中的视图很少(ProgressBar是另一个示例),您必须使用图形颜色过滤器更改颜色,而不是更改背景/前景源颜色。
查找.setColorFilter()
方法,使用一些PorterDuff过滤器为您提供源颜色,例如.Mode.MULTIPLY
(取决于您最喜欢的过滤模式),然后就可以了。
示例:
seekBar.setColorFilter(new PorterDuffColorFilter(srcColor,PorterDuff.Mode.MULTIPLY));