Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SeekBar:如何在进程中更改完整SeekBar的颜色_Android_Seekbar - Fatal编程技术网

Android SeekBar:如何在进程中更改完整SeekBar的颜色

Android SeekBar:如何在进程中更改完整SeekBar的颜色,android,seekbar,Android,Seekbar,我想找一个进度为0时呈绿色的搜索栏。 当进度达到50时,颜色慢慢变为黄色,当进度达到100时,颜色再次慢慢变为红色 我可以为seekbar的进度部分做这些 但我想改变搜索栏的全彩,而不仅仅是进度部分 有人能帮忙吗 谢谢。试试这个,您需要更改hsv阵列以满足您的需要 final ProgressBar pb = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal); LayerDrawable ld = (La

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

我可以为seekbar的进度部分做这些

但我想改变搜索栏的全彩,而不仅仅是进度部分

有人能帮忙吗


谢谢。

试试这个,您需要更改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);