2010-08-16 50 views

回答

73

在搜索欄,你can set only max value.

<SeekBar android:id="@+id/SeekBar01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:max="50"/> 

而且, 不能直接設定的最低值到搜索條。

SeekBar mSeekbar = (SeekBar) findViewById(R.id.SeekBar01); 

    mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
    { 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
     { 
      length_edit.setText(Integer.toString(progress + 20)); 
     } 

     public void onStartTrackingTouch(SeekBar seekBar) {} 

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

正如你所看到的進展分鐘你可以用分鐘綜上所述,我想 - 你的情況20

+0

呃效果謝謝你的代碼, 它工作,除了我用來設置progrees值的textview沒有顯示和事實應用程序崩潰。 – iscavengers 2010-08-16 08:07:33

+0

對不起,夥計y沒有迴應..我upvoted和aaccepeted d回答... 享受 – iscavengers 2010-08-30 04:59:33

+0

@Paresh:設置最小值seekbar的好邏輯。大。 。 。 – 2012-04-18 07:14:35

22

將最大值設置爲30,並將20添加到您從SeekBar中讀取的值。

+1

這是唯一的答案,沒有對期望的最大 – Flynny75 2013-05-30 21:01:20

4

要做到這一點最簡單的方法是隻限制其在SeekBar.OnSeekBarChangeListener()SeekBar

首先,您需要使用最小或默認值創建字段。

private int fillDefault; 

在一個ActivityFragmentonCreateonCreateView():然後創建SeekBar時設置這個值

fillDefault = 20; 
fillSeekBar.setProgress(fillDefault); 

其次,實施監聽它:

fillSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      // Notification that the progress level has changed. 
      if (progress < fillDefault){ 
       seekBar.setProgress(fillDefault); // magic solution, ha 
      } 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // Notification that the user has started a touch gesture. 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // Notification that the user has finished a touch gesture. 
     } 
    }); 

它的工作原理。簡單真棒:d

+1

當您將填充設置爲0dp並且希望避免拇指與搜索欄的末端重疊時,此解決方案是理想的,即:if(progress == 0){seekBar.setProgress(1); } – PedroHidalgo 2017-01-28 22:34:11

-3

你可以試試這個:

seekBar.setMax(max_value-min_value); 
0

例如;

public static int LENGTH_MIN_VALUE = 20; 
public static int LENGTH_MAX_VALUE = 50; 
SeekBar seekBar = (SeekBar) findViewById(R.id.passwordSeekBar); 
    seekBar.setMax(LENGTH_MAX_VALUE); 
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      if(progress <= Constract.PASSWORD_LENGTH_MIN_VALUE){ 
       progress = Constract.PASSWORD_LENGTH_MIN_VALUE + progress; 
      } 

      String numberAsString = String.valueOf(progress); 
      seekNumberView.setText(numberAsString); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) {} 

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