2013-03-26 7 views
6

से फ्लोट वैल्यू seekbar के साथ 0.0 से 2.0 के मान कैसे प्राप्त कर सकता है? मूल्य 0.5 (0.0, 0.5, 1.0, 1.5, 2.0) के चरणों में जाना चाहिए क्या कोई मेरी मदद कर सकता है?एंड्रॉइड सीकबार 0.0 से 2.0

उत्तर

13

seekbar ProgressBar फैली हुई है।

ProgressBar चूंकि यह केवल int आप नाव है कि आप के बाद कर रहे हैं पाने के लिए एक पूर्णांक मूल्य से कुछ रूपांतरण करना होगा स्वीकार करता है एक विधि

public void setMax(int max) 

है।

कुछ इस तरह चाल करना चाहिए:

mSeekBar.setMax(4); 
//max = 4 so the possible values are 0,1,2,3,4 
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){ 
    public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) 
    { 
     // TODO Auto-generated method stub 
     Toast.makeText(seekBar.getContext(), "Value: "+getConvertedValue(progress), Toast.LENGTH_SHORT).show(); 
    } 
    public void onStartTrackingTouch(SeekBar seekBar) 
    { 
     // TODO Auto-generated method stub 
    } 
    public void onStopTrackingTouch(SeekBar seekBar) 
    { 
     // TODO Auto-generated method stub 
    } 
}); 

यह भाग आपके OnCreate() में हो जाएगा और आप findViewById() या कुछ और का उपयोग करने के mSeekBar के लिए एक संदर्भ पाने के लिए होगा।

public float getConvertedValue(int intVal){ 
    float floatVal = 0.0; 
    floatVal = .5f * intVal; 
    return floatVal; 
} 

यह हिस्सा एक और तरीका है कि आप अपने गतिविधि कि पूर्णांक से परिवर्तित कर देंगे रेंज आप की जरूरत के भीतर मूल्यों फ्लोट करने के लिए जोड़ सकते हैं।

+0

अच्छा, धन्यवाद !! अब मुझे तलाशबार प्रगति सेट करने की जरूरत है, लेकिन प्रोग्रेस फ़ंक्शन केवल int मान स्वीकार करता है, मैं इस प्रोजेक्ट में फ्लोट को int में कैसे परिवर्तित कर सकता हूं? – kosma822

+0

@ kosma822 आप setProgress (int) विधि का उपयोग करते हैं। जब आप इसे कॉल करते हैं, तो इसे बदले में अपने श्रोता में ऑन प्रोग्रेसचेंज() विधि को कॉल करना चाहिए जो उस विधि के साथ आपके लिए फ़्लोट करने के लिए रूपांतरण करेगा जो मेरे उत्तर में कोड का दूसरा हिस्सा है। बस मेरे उदाहरण में टोस्ट को जो कुछ भी आप फ्लोट वैल्यू के साथ करना चाहते हैं उसे बदलें। – FoamyGuy

0

आप अपने स्वयं के कस्टम, सीक बार यह वांछित मूल्यों के बीच कूद और उन्हें छड़ी बनाने को लागू करना चाहिए, आप यहाँ उपयोगी जानकारी मिल सकता है:

Making A Custom Skinny ProgressBar/Seekbar

+0

को यही सवाल सौदों अधिक बजाय seekbar का रूप मान जो संभव हो रहे हैं की कार्यक्षमता को अनुकूलित के साथ। ओपी के प्रभाव के बाद कस्टम खोज बार बनाने की आवश्यकता नहीं है। वहां केवल उन मूल्यों की सीमा के लिए int से फ़्लोट करने की आवश्यकता है, जिनकी उन्हें आवश्यकता है। – FoamyGuy

+0

मुझे कस्टम लेआउट की आवश्यकता नहीं है, मैं इसे प्रोग्रामेटिक रूप से करने के लिए तैयार हूं, और मुझे एक उदाहरण चाहिए:/ – kosma822

1
 textView.setProgress(0); 
    textView.incrementProgressBy(1); 
    textView.setMax(4); 

     public void onProgressChanged(SeekBar seekBar, int progress, 
        boolean fromUser) { 

         float progressD=(float) progress/2; 
         textView.setText(String.valueOf(progressD)); 

// 0 से 2 कदम 0.5

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