2010-08-16 7 views
31

SeekBar의 최대 및 최소 한계를 각각 50 및 20으로 설정하고 싶습니다.seekbar를 제한하는 방법

SeekBar에는 최대 값을 제공하는 직접 옵션이 있지만 0보다 최소값을 20으로 설정하는 방법은 무엇입니까?

답변

73
SeekBar를 당신 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

입니다. ur 코드에 대해 감사합니다. 사실, textview를 사용하여 progrees 값을 설정하고 표시하고 있지 않습니다. 앱이 추락합니다. – iscavengers

+0

죄송합니다, waz에두고, dats y 응답하지 않았다 .i upvoted 및 대답 aaccepeted 대답 ... enjoy – iscavengers

+0

@ Paresh : seekbar에 최소 값을 설정하는 좋은 논리. 큰. . . –

22

최대 값을 30으로 설정하고 SeekBar에서 읽은 값에 20을 더하십시오.

+1

원하는 최대 값에 영향을주지 않는 유일한 대답은 – Flynny75

4

이 작업을 수행하는 가장 간단한 방법은 당신의 SeekBarSeekBar.OnSeekBarChangeListener()에서 그것을 제한하는 것입니다.

먼저 min 또는 default 값으로 필드를 만들어야합니다. ActivityFragment 또는 onCreateonCreateView()에서

private int fillDefault; 

: 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

-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) {} 
    }); 
관련 문제