当前位置:  开发笔记 > 编程语言 > 正文

android Seekbar沿搜索栏显示进度值

如何解决《androidSeekbar沿搜索栏显示进度值》经验,为你挑选了1个好方法。

我有一个listviewseekbar每个seekbar代表产品的值的100%.通过移动seekbar可以更改%值,我想在用户拖动时显示沿搜索条的值的变化seekbar.我希望再添加一个文本框,值被更新.

我更关注在seekbar指针顶部显示一个小视图的选项,它会出现onStartTracking并消失onStopTracking事件.

有没有办法实现这个目标?



1> Charuක..:

这是一个简单的方法,

textView在XML中添加一个

通过移动来改变它的位置 seekBar

这将使用它 setX()

如果你想要,你也可以给setY()它的Y位置

如果你想隐藏写一些逻辑,并textView在你需要时使Visibility GONE.

例:

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                    int val = (progress * (seekBar.getWidth() - 2 * seekBar.getThumbOffset())) / seekBar.getMax();
                    textView.setText("" + progress);
                    textView.setX(seekBar.getX() + val + seekBar.getThumbOffset() / 2);
                    //textView.setY(100); just added a value set this properly using screen with height aspect ratio , if you do not set it by default it will be there below seek bar 

                }

或者你可以使用Paint与你的自定义SeekBar类没有任何TextView

创建一个类

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.SeekBar;


public class MySeekBar extends SeekBar {
    public MySeekBar (Context context) {
        super(context);
    }

    public MySeekBar (Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public MySeekBar (Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas c) {
        super.onDraw(c);
        int thumb_x = (int) (( (double)this.getProgress()/this.getMax() ) * (double)this.getWidth());
        float middle = (float) (this.getHeight());

        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setTextSize(20);
        c.drawText(""+this.getProgress(), thumb_x, middle, paint);
    }
}

SeekBar在XML中设置/创建您的

  

现在来自你的活动

seekBar = (MySeekBar) findViewById(R.id.my_seek_bar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
    }
});

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有