2011-01-13 40 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); 
     } 
    });