एंड्रॉइड 2.3.3 के लिए ड्रॉपडाउन स्पिनर बनाने का कोई तरीका है? मैं एक्शनबार शेरलॉक का उपयोग कर रहा हूं।एक्शनबार के बाहर ड्रॉपडाउन स्पिनर? (आइसक्रीम सैंडविच शैली, डब्ल्यू/एक्शनबारशेलॉक)
धन्यवाद
एंड्रॉइड 2.3.3 के लिए ड्रॉपडाउन स्पिनर बनाने का कोई तरीका है? मैं एक्शनबार शेरलॉक का उपयोग कर रहा हूं।एक्शनबार के बाहर ड्रॉपडाउन स्पिनर? (आइसक्रीम सैंडविच शैली, डब्ल्यू/एक्शनबारशेलॉक)
धन्यवाद
यह खड़ा के रूप में, आप भाग्यशाली हैं:
यहाँ मैं क्या मतलब का एक उदाहरण है। यह एक्शनबैरशेलॉक के साथ किया जा सकता है और यह संस्करण प्री-4.0 के साथ काम करता है। हालांकि, मुझे 100% यकीन नहीं है कि जेक व्हार्टन हमें इस तरह इसका उपयोग करना चाहेंगे, क्योंकि यह बिल्कुल "सार्वजनिक एपीआई" नहीं है, AFAIK (मुझे पूछना है)।
public class MyIcsSpinner extends IcsSpinner {
public MyIcsSpinner(Context context, AttributeSet attrs) {
super(context, attrs, com.actionbarsherlock.R.attr.actionDropDownStyle);
}
public MyIcsSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
एक लेआउट में शामिल करने के लिए:: वैसे भी, आप पहली बार ActionBarSherlock वर्ग से विस्तार करने के लिए अपने स्वयं के वर्ग बनाने के लिए
<com.blah.blah.blah.MyIcsSpinner
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:textAllCaps="true"
android:background="@drawable/abs__spinner_ab_holo_light"
android:textColor="#000000"
android:gravity="center"/>
अब आप एक कस्टम SpinnerAdapter
बनाने के लिए है, और आप की जरूरत है उचित दिखने और महसूस करने के लिए निम्न विधियों को ओवरराइड करने के लिए:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final TextView filterName;
if (convertView == null) {
filterName = (TextView) layoutInflater.inflate(R.layout.filter_item, parent, false);
} else {
filterName = (TextView) convertView;
}
filterName.setText(getItem(position));
return filterName;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
final TextView filterName;
if (convertView == null) {
filterName = (TextView) layoutInflater.inflate(R.layout.sherlock_spinner_dropdown_item, parent, false);
filterName.setEllipsize(TruncateAt.END);
} else {
filterName = (TextView) convertView;
}
filterName.setText(getItem(position));
return filterName;
}
वाईएमएमवी, एसएसपी। विषयों के बारे में।
धन्यवाद, महान काम करता है! डिवाइस रोटेशन के बाद –
@ डॉन ड्रॉपडाउन चौड़ाई नहीं बदला गया है। क्या आप इस पर सुझाव दे सकते हैं? –
मुझे एक ही समस्या मिली है और मेरा समाधान काफी सरल है। (मैंने HoloEverywhere का उपयोग नहीं किया।)
विचार एबीएस नमूना प्रोजेक्ट से आता है, जिसका ड्रॉप-डाउन मेनू प्री-4.0 उपकरणों पर भी उपमेनू का उपयोग करके प्रदर्शित किया जा सकता है। तो, मेरा विचार 3-डॉट आइकन छिपाने के लिए उपमेनू का उपयोग कर रहा है। कोड यह रहा:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu sub = menu.addSubMenu("More");
sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
sub.getItem().setIcon(R.drawable.ic_menu);
getSupportMenuInflater().inflate(R.menu.activity_main, sub);
return true;
}
"अधिक" मेनू एक MenuItem.SHOW_AS_ACTION_WITH_TEXT विशेषता नहीं है के बाद से, इसलिए शब्द "अधिक" (या आप जो कुछ भी नामित) वास्तव में कार्रवाई बार पर प्रदर्शित नहीं किया जाएगा। केवल प्रदर्शित आइकन R.drawable.ic_menu को "abs__ic_menu_moreoverflow_normal_holo_dark.png" नामक एबीएस स्रोत कोड res/drawable-xxdpi फ़ोल्डरों से कॉपी किया जा सकता है, जो तथाकथित 3-बिंदु आइकन है। और R.menu.activity_main आपका मेनू xml है।
यह काम करता है!
ड्रॉपडाउन [स्पिनर] (http://developer.android.com/reference/android/widget/Spinner.html) के बारे में कैसे एपीआई 1 के आसपास रहा है? थीम अलग हो सकती हैं, लेकिन आप इसे अधिकांश कस्टम थीम में कॉपी करने में सक्षम होना चाहिए। – Sam
उनका मतलब आईसीएस स्पिनरों का स्वरूप और अनुभव है, जहां वे एक संवाद होने के बजाय "ड्रॉप डाउन" करते हैं। – dmon