2011-01-13 41 views
0

我希望这是一个简单的问题。如何在触摸后自行更新seekbar

我有一个seekbar,我想限制它可以设置的范围。该范围可以根据其他因素(其他搜索条的值等)而变化。

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

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

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

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; 
    } 
    }); 

所以,如果我拖累跌破30这一样本中,如果我拖累了上述30一切都好值将被重新设置多达30

。如果我拖动到30分以下,那么查询条GetValue()会回到30,但是查询条会显示较低的值。

例如,如果将其一直拖到0,则返回值为30,但在屏幕上显示为0。

我怎样才能让seekbar自动重新显示在30的位置?

我试图改变焦点,从另一种方法更新seekbar。到目前为止没有任何工作。

任何想法?

回答

1

经过许多艰苦的搜索后,我有我的答案。

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){} 
}); 

感谢任何一直在研究这个问题的人。

+0

为寻找搜索条触摸控制ADN这里https://github.com/nitiwari-dev/SeekBar-Swipecontrol找到一个演示 – nitesh 2015-06-15 05:35:30

0

我认为这将帮助你..

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); 
     } 
    });