2010-08-16 14 views
31

मैं सेक्करबार क्रमश: 50 और 20 की अधिकतम और न्यूनतम सीमा निर्धारित करना चाहता हूं।खोजबार को कैसे सीमित करें

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 करने के लिए न्यूनतम मूल्य निर्धारित नहीं कर सकते।

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

पर कोई प्रभाव नहीं पड़ता है, आपके कोड के लिए धन्यवाद, यह काम कर रहा है, इस तथ्य को छोड़कर, मैं जिस पाठदृश्य का उपयोग कर रहा हूं, वह प्रोग्री मूल्य निर्धारित करने के लिए उपयोग कर रहा है, ऐप दुर्घटनाग्रस्त हो जाता है। – iscavengers

+0

क्षमा करें दोस्त, छुट्टी पर waz, dats y प्रतिक्रिया नहीं दी .. मैं upvoted और unacpetpeted डी जवाब ... आनंद लें – iscavengers

+0

@Paresh: न्यूनतम तर्क निर्धारित करने के लिए अच्छा तर्क सेट करने के लिए अच्छा तर्क। महान। । । –

22

अधिकतम मूल्य 30 पर सेट करें और SeekBar से पढ़ने वाले मानों में 20 जोड़ें।

+1

यह एकमात्र उत्तर है जिसका वांछित अधिकतम – Flynny75

4

यह करने के लिए सबसे आसान तरीका में सिर्फ अपने SeekBar के लिए SeekBar.OnSeekBarChangeListener() में सीमित करने के लिए है।

सबसे पहले, आपको न्यूनतम या डिफ़ॉल्ट मान के साथ फ़ील्ड बनाने की आवश्यकता है।

private int fillDefault; 

एक Fragment या onCreate एक Activity की की onCreateView() में: फिर जब 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. 
     } 
    }); 

यह काम करता है । सरल और भयानक: डी

+1

यह समाधान आदर्श है जब आप पैडिंग को 0 डीपी पर छोड़ देते हैं और यह देखना चाहते हैं कि अंगूठे तलाशने वाले के अंत में ओवरलैप करें। अगर (प्रगति == 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) {} 
    }); 
0

मैं इस सवाल का जवाब यहां है: How to set seekbar min and max value

सरल गणित के साथ आप न्यूनतम मान, अधिकतम मूल्य और यहां तक ​​कि अपनी तलाशबार का चरण भी सेट कर सकते हैं।

आशा है कि इससे मदद मिलती है!

संबंधित मुद्दे