Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/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中使用TextView创建自定义SeekBar?_Android_Android Xml_Android Custom View - Fatal编程技术网

如何在Android中使用TextView创建自定义SeekBar?

如何在Android中使用TextView创建自定义SeekBar?,android,android-xml,android-custom-view,Android,Android Xml,Android Custom View,如何在Android中使用SeekBar或ProgressBar创建可移动的TextView?您可以使用写有文本的位图来代替TextView。像这样的 SeekBar timerBar = (SeekBar) findViewById(R.id.seekBarTimer); if (timerBar != null) { timerBar.setMax((int) (Settings.countdownSeconds + 1)); timerBar.setOnSeekBarCha


如何在Android中使用
SeekBar
ProgressBar
创建可移动的
TextView

您可以使用写有文本的位图来代替TextView。像这样的

SeekBar timerBar = (SeekBar) findViewById(R.id.seekBarTimer);
if (timerBar != null) {
    timerBar.setMax((int) (Settings.countdownSeconds + 1));
    timerBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onProgressChanged(SeekBar timerBar, int arg1, boolean arg2) {
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.seek_thumb);
            Bitmap bmp = bitmap.copy(Bitmap.Config.ARGB_8888, true);
            Canvas c = new Canvas(bmp);
            String text = Integer.toString(timerBar.getProgress());
            Paint p = new Paint();
            p.setTypeface(Typeface.DEFAULT_BOLD);
            p.setTextSize(14);
            p.setColor(0xFFFFFFFF);
            int width = (int) p.measureText(text);
            int yPos = (int) ((c.getHeight() / 2) - ((p.descent() + p.ascent()) / 2));
            c.drawText(text, (bmp.getWidth()-width)/2, yPos, p);
            timerBar.setThumb(new BitmapDrawable(getResources(), bmp));
        }
    });
    timerBar.setProgress(0);
}

您可以创建带有文字的位图,而不是textview。像这样的

SeekBar timerBar = (SeekBar) findViewById(R.id.seekBarTimer);
if (timerBar != null) {
    timerBar.setMax((int) (Settings.countdownSeconds + 1));
    timerBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onProgressChanged(SeekBar timerBar, int arg1, boolean arg2) {
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.seek_thumb);
            Bitmap bmp = bitmap.copy(Bitmap.Config.ARGB_8888, true);
            Canvas c = new Canvas(bmp);
            String text = Integer.toString(timerBar.getProgress());
            Paint p = new Paint();
            p.setTypeface(Typeface.DEFAULT_BOLD);
            p.setTextSize(14);
            p.setColor(0xFFFFFFFF);
            int width = (int) p.measureText(text);
            int yPos = (int) ((c.getHeight() / 2) - ((p.descent() + p.ascent()) / 2));
            c.drawText(text, (bmp.getWidth()-width)/2, yPos, p);
            timerBar.setThumb(new BitmapDrawable(getResources(), bmp));
        }
    });
    timerBar.setProgress(0);
}

您可以创建带有文字的位图,而不是textview。像这样的

SeekBar timerBar = (SeekBar) findViewById(R.id.seekBarTimer);
if (timerBar != null) {
    timerBar.setMax((int) (Settings.countdownSeconds + 1));
    timerBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onProgressChanged(SeekBar timerBar, int arg1, boolean arg2) {
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.seek_thumb);
            Bitmap bmp = bitmap.copy(Bitmap.Config.ARGB_8888, true);
            Canvas c = new Canvas(bmp);
            String text = Integer.toString(timerBar.getProgress());
            Paint p = new Paint();
            p.setTypeface(Typeface.DEFAULT_BOLD);
            p.setTextSize(14);
            p.setColor(0xFFFFFFFF);
            int width = (int) p.measureText(text);
            int yPos = (int) ((c.getHeight() / 2) - ((p.descent() + p.ascent()) / 2));
            c.drawText(text, (bmp.getWidth()-width)/2, yPos, p);
            timerBar.setThumb(new BitmapDrawable(getResources(), bmp));
        }
    });
    timerBar.setProgress(0);
}

您可以创建带有文字的位图,而不是textview。像这样的

SeekBar timerBar = (SeekBar) findViewById(R.id.seekBarTimer);
if (timerBar != null) {
    timerBar.setMax((int) (Settings.countdownSeconds + 1));
    timerBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
        }

        @Override
        public void onProgressChanged(SeekBar timerBar, int arg1, boolean arg2) {
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.seek_thumb);
            Bitmap bmp = bitmap.copy(Bitmap.Config.ARGB_8888, true);
            Canvas c = new Canvas(bmp);
            String text = Integer.toString(timerBar.getProgress());
            Paint p = new Paint();
            p.setTypeface(Typeface.DEFAULT_BOLD);
            p.setTextSize(14);
            p.setColor(0xFFFFFFFF);
            int width = (int) p.measureText(text);
            int yPos = (int) ((c.getHeight() / 2) - ((p.descent() + p.ascent()) / 2));
            c.drawText(text, (bmp.getWidth()-width)/2, yPos, p);
            timerBar.setThumb(new BitmapDrawable(getResources(), bmp));
        }
    });
    timerBar.setProgress(0);
}