如何更改 android 中的 SeekBar 颜色? (以编程方式)
how to change SeekBar color in android? (Programmatically)
我为我的应用程序制作了一个均衡器,但我不确定如何更改搜索栏的缩略图和进度条颜色。默认情况下它似乎是粉红色的,这不符合我的应用程序的美学。
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 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);
//seekBar.setBackgroundColor(Color.DKGRAY);
//seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY);
在 Android SDK 中很少有视图(ProgressBar 是另一个示例)中您必须使用图形滤色器更改颜色,而不是更改背景/前景源颜色。
找到 .setColorFilter()
方法,使用一些 PorterDuff 滤镜将源颜色输入其中,例如 .Mode.MULTIPLY
(取决于您最喜欢的滤镜模式)然后就可以了。
示例:
seekBar.setColorFilter(new PorterDuffColorFilter(srcColor,PorterDuff.Mode.MULTIPLY));
要更改 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 缩略图颜色。
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);
虽然使用样式是个好主意,但如果您想以编程方式分配颜色,它并不能提供太多灵活性,我建议:
//for the progress
seekBar.getProgressDrawable().setColorFilter(mThemeColor,PorterDuff.Mode.SRC_ATOP);
//for the thumb handle
seekBar.getThumb().setColorFilter(mThemeColor, PorterDuff.Mode.SRC_ATOP);
您可以像这样以编程方式更改搜索栏缩略图和进度颜色:
seekBar.getProgressDrawable().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
您可以通过代码轻松更改它,
例如:
seekbar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(#000000)));
或
seekbar.setProgressTintList(ColorStateList.valueOf(Color.RED));
希望对以后的人有所帮助。
再多一点桃色回答
public static void setSeekBarColor(SeekBar seekBar, int color) {
seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}
我为我的应用程序制作了一个均衡器,但我不确定如何更改搜索栏的缩略图和进度条颜色。默认情况下它似乎是粉红色的,这不符合我的应用程序的美学。
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 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);
//seekBar.setBackgroundColor(Color.DKGRAY);
//seekBar.setDrawingCacheBackgroundColor(Color.DKGRAY);
在 Android SDK 中很少有视图(ProgressBar 是另一个示例)中您必须使用图形滤色器更改颜色,而不是更改背景/前景源颜色。
找到 .setColorFilter()
方法,使用一些 PorterDuff 滤镜将源颜色输入其中,例如 .Mode.MULTIPLY
(取决于您最喜欢的滤镜模式)然后就可以了。
示例:
seekBar.setColorFilter(new PorterDuffColorFilter(srcColor,PorterDuff.Mode.MULTIPLY));
要更改 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 缩略图颜色。
seekBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);
虽然使用样式是个好主意,但如果您想以编程方式分配颜色,它并不能提供太多灵活性,我建议:
//for the progress
seekBar.getProgressDrawable().setColorFilter(mThemeColor,PorterDuff.Mode.SRC_ATOP);
//for the thumb handle
seekBar.getThumb().setColorFilter(mThemeColor, PorterDuff.Mode.SRC_ATOP);
您可以像这样以编程方式更改搜索栏缩略图和进度颜色:
seekBar.getProgressDrawable().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Utils.getAccentColor(this), PorterDuff.Mode.SRC_IN);
您可以通过代码轻松更改它,
例如:
seekbar.setProgressTintList(ColorStateList.valueOf(Color.parseColor(#000000)));
或
seekbar.setProgressTintList(ColorStateList.valueOf(Color.RED));
希望对以后的人有所帮助。
再多一点桃色回答
public static void setSeekBarColor(SeekBar seekBar, int color) {
seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}