Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.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自身更新_Android_Refresh_Seekbar - Fatal编程技术网

Android 触摸后如何使seekbar自身更新

Android 触摸后如何使seekbar自身更新,android,refresh,seekbar,Android,Refresh,Seekbar,我希望这是一个简单的问题 我有一个seekbar,我想限制它可以设置的范围。此范围可能会根据其他因素(其他Seekbar的值等)而变化 seekbar是一个简单的0到100范围,定义了一个百分比。我需要这个值是一个最小值,可以从0%(正常seekbar操作)到更高的值(比如说50%) 代码进行计算并根据其他变量确定最小值 当我将seekbar拖动到低于此阈值时,我希望它将其值重置为该最小值。下面是一些示例代码 seek6.setOnTouchListener( new OnTouchListen

我希望这是一个简单的问题

我有一个seekbar,我想限制它可以设置的范围。此范围可能会根据其他因素(其他Seekbar的值等)而变化

seekbar是一个简单的0到100范围,定义了一个百分比。我需要这个值是一个最小值,可以从0%(正常seekbar操作)到更高的值(比如说50%)

代码进行计算并根据其他变量确定最小值

当我将seekbar拖动到低于此阈值时,我希望它将其值重置为该最小值。下面是一些示例代码

seek6.setOnTouchListener( new OnTouchListener() { 

@Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP) {        
        int CurrentLevel = seek6.getProgress();
        if (CurrentLevel < 30) CurrentLevel = 30;
        seek6.setProgress(CurrentLevel);
            }

    return false;
    }   
     });
seek6.setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
如果(event.getAction()==MotionEvent.ACTION\u UP){
int CurrentLevel=seek6.getProgress();
如果(CurrentLevel<30)CurrentLevel=30;
参见6.设置进度(当前级别);
}
返回false;
}   
});
因此,在这个示例中,如果我拖动到30以下,该值将设置回30

如果我拖到30以上,一切都好。如果拖动到30标记以下,则seekbar GetValue()返回为30,但seekbar显示的是较低的值

例如,如果我把它一直拖到0,返回值是30,但它在屏幕上显示0

如何使seekbar自动重新显示在30位置

我试图改变焦点,用另一种方法更新seekbar。到目前为止,一切都不起作用


有什么想法吗?

经过几个小时的艰苦搜索,我终于找到了答案

seek6.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
    public void onStopTrackingTouch(SeekBar seekBar){               
        // TODO My code goes here

        int CurrentLevel = seek6.getProgress();
        if(CurrentLevel < 30)
            CurrentLevel = 30;
        seek6.setProgress(CurrentLevel);

    }

    public void onStartTrackingTouch(SeekBar seekBar){}

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){}
});
seek6.setonseekbarchaneglistener(新的onseekbarchaneglistener()){
TopTrackingTouch上的公共无效(SeekBar SeekBar){
//TODO我的代码在这里
int CurrentLevel=seek6.getProgress();
如果(电流电平<30)
电流电平=30;
参见6.设置进度(当前级别);
}
开始跟踪触摸时的公共无效(SeekBar SeekBar){}
public void onProgressChanged(SeekBar-SeekBar,int-progress,boolean-fromUser){}
});

感谢所有对此进行过研究的人。

我想这会对你有所帮助

    final TextView t1 = (TextView) findViewById(R.id.t1);
    final SeekBar sk = (SeekBar) findViewById(R.id.seekBar1);

    sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

        int p = 0;

        @Override
        public void onStopTrackingTouch(SeekBar seekBar){
            if(p < 30){
                p = 30;
                sk.setProgress(p);
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar){}

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
            p = progress;
            t1.setTextSize(p);
        }
    });
final TextView t1=(TextView)findviewbyd(R.id.t1);
最终SeekBar sk=(SeekBar)findviewbyd(R.id.seekBar1);
sk.setOnSeekbarchaneListener(新的OnSeekbarchaneListener(){
int p=0;
@凌驾
TopTrackingTouch(SeekBar SeekBar)上的公共无效{
if(p<30){
p=30;
sk.setProgress(p);
}
}
@凌驾
开始跟踪触摸时的公共无效(SeekBar SeekBar){}
@凌驾
public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-fromUser){
p=进展;
t1.setTextSize(p);
}
});

任何人都可以在这里找到seekbar触摸控制和演示