2012-12-10 10 views
6

मैं स्पिनर के नए आइस क्रीम सैंडविच संस्करण की नकल करने की कोशिश कर रहा हूं, जहां यह पॉप-अप की बजाय ड्रॉप-डाउन सूची की तरह दिखता है। अप संवाद। See this link के बारे में जानने के लिए कि मैं किस बारे में बात कर रहा हूं। मैं वांछित प्रभाव प्राप्त करने के लिए ActionBarSherlock का उपयोग करने के लिए बताई गई कुछ पोस्ट पढ़ता हूं। हालांकि, यह केवल एक्शन बार में उपयोग के लिए बनाया गया है, इसलिए, मैं आईसीएस स्पिनर को एक्शन बार से कैसे ले सकता हूं?पुराने एंड्रॉइड संस्करणों में आईसीएस स्पिनर (संवाद के बजाय ड्रॉप-डाउन ")

There is a pretty good answer here, अभी तक, मुझे लगता है कि यह थोड़ा सा ओवरकिल है? क्या कोई आसान तरीका है?

उत्तर

17

सबसे पहले, मैंने this link का संदर्भ दिया कि मुझे अपने प्रश्न का उत्तर देना चाहिए या नहीं। मुझे लगा कि यह किसी भी समस्या का सामना करने वाले किसी के लिए बहुत उपयोगी हो सकता है, इसलिए मैं क्षमा चाहता हूं कि यह इस वेबसाइट के लिए उचित शिष्टाचार नहीं है (अपने स्वयं के प्रश्न का उत्तर देने के लिए)।

अब, मैं इस समस्या के समाधान खोजने के लिए चारों ओर ठोकर खा रहा हूं और परीक्षण और त्रुटि के साथ मैं सफल रहा हूं।

<com.actionbarsherlock.internal.widget.IcsSpinner 
      android:id="@+id/spinner" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/title" 
      android:layout_margin="10sp" 
      android:layout_centerHorizontal="true" 
      android:textSize="18sp" /> 

ऊपर कोड स्पिनर जो ActionBarSherlock पुस्तकालय में है की ICS संस्करण का उपयोग करेगा: तो, है एक बार आप ActionBarSherlock एसडीके डाउनलोड किया है और अपनी परियोजना में स्थापित, अपने लेआउट कि स्पिनर को शामिल करेगा पैदा करते हैं। इसके बाद, आपकी गतिविधि में स्पिनर ऑब्जेक्ट की घोषणा और तत्काल (कास्टिंग का उपयोग करके)। लेकिन ध्यान दें कि आप सामान्य स्पिनर वर्ग का उपयोग नहीं करते हैं, तो आप IcsSpinner वर्ग ActionBarSherlock पुस्तकालय में पाया का उपयोग करें: अब

IcsSpinner spinner = (IcsSpinner)findViewById(R.id.spinner); 

, तुम बस के रूप में आप सामान्य स्पिनर के लिए, की तरह होगा तो एक एडाप्टर बनाने के लिए:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, elements); 
spinner.setAdapter(adapter); 

अंत में, आपको onItemSelectedListener सेट अप करने की आवश्यकता है। केवल प्रमुख अंतर यह है कि यहाँ आप IcsAdapterView.OnItemSelectedListener बल्कि सिर्फ OnItemSelectedListener से उपयोग करते हैं:

spinner.setOnItemSelectedListener(new IcsAdapterView.OnItemSelectedListener(){ 
    @Override 
    public void onItemSelected(IcsAdapterView<?> parent, View view, int position, long id){ 
    } 
    @Override 
    public void onNothingSelected(IcsAdapterView<?> parent){ 
    } 
}); 

और बस हो गया। स्पिनर ऑब्जेक्ट का उपयोग करके यह वास्तव में बहुत अलग नहीं है। जितना आसान है, मुझे समझने में थोड़ी देर लग गई, इसलिए, मुझे आशा है कि यह किसी के लिए उपयोगी होगा।

ओह, हाँ, और इतने की तरह, एक ActionBarSherlock विषय का उपयोग करने के (प्रकट) में भूल नहीं है:

android:theme="@style/Theme.Sherlock" 
+3

एक अच्छा जवाब के लिए +1। – Ahmad

+2

एंड्रॉइड समर्थन पुस्तकालय के साथ स्पिनर की तरह आईसीएस का उपयोग करने का कोई तरीका? मैं एक्शनबार शेरलॉक का उपयोग नहीं कर रहा हूं। –

+1

@ सुरेशेमलेमुडी [होलो रंग जनरेटर] (http://android-holo-colors.com/) करेगा, केवल अंतर पृष्ठभूमि है, ics स्पिनर रेखांकित है – oscarthecat

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