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