Android SeekBar:如何在进度中更改完整搜索栏的颜色

时间:2013-12-08 09:58:58

标签: android seekbar

我希望找到一个在进度为0时呈绿色的搜索栏。 当进度达到50时,颜色缓慢变为黄色,然后当进度为100时,颜色再次缓慢变为红色。

我可以为搜索栏的进度部分执行此操作。

但是我希望改变搜索条的全部颜色,而不仅仅是进度部分。

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个,您需要更改hsv数组以满足您的需求

final ProgressBar pb = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
LayerDrawable ld = (LayerDrawable) pb.getProgressDrawable();
final Drawable progressDrawable = ld.findDrawableByLayerId(android.R.id.progress);
OnTouchListener l = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int progress = (int) (event.getX() * 100 / pb.getWidth());
        float[] hsv = {
                event.getX() * 360 / pb.getWidth(), 1, 1
        };
        int color = Color.HSVToColor(hsv);
        progressDrawable.setColorFilter(color, Mode.SRC);
        pb.setProgress(progress);
        return true;
    }
};
pb.setOnTouchListener(l);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 32);
setContentView(pb, lp);