से डिज़ाइन चश्मा वाले लोगों की तरह ड्रॉपडाउन बटन/स्पिनर मैं सोच रहा हूं कि मैं ड्रॉपडाउन बटन/मेनू कैसे कर सकता हूं जैसे कि हम Google से डिज़ाइन चश्मा में देख सकते हैं और छवि में, इसलिए सूची बटन को सही ढंग से झुकाएं। क्या मुझे R.layout.support_simple_spinner_dropdown_item
के बजाय इसके लिए एक कस्टम लेआउट सेट करने की आवश्यकता है?Google
उत्तर
तकनीकी तौर पर यह सिर्फ एक स्पिनर है इस्तेमाल कर सकते हैं।
मैंने ऐप कॉम्पैक्ट का उपयोग करके, कस्टम ड्रॉबल्स के साथ काम करने और दृश्य की ऊंचाई संपत्ति के साथ काम करने वाले एक जैसा दिखने की कोशिश की, इस प्रकार यह 5.0 से पुराने संस्करणों के लिए पूरी तरह से काम नहीं कर सकता है।
<your.package.CustomSpinner
android:id="@+id/spinner"
style="@style/Widget.AppCompat.Spinner"
android:layout_margin="10dp"
android:layout_width="200dp"
android:dropDownWidth="200dp"
android:layout_height="?attr/dropdownListPreferredItemHeight"
android:dropDownVerticalOffset="?attr/dropdownListPreferredItemHeight"
android:background="@drawable/spinner_bg"
android:popupBackground="@android:color/white"
android:paddingRight="14dp"
android:stateListAnimator="@drawable/spinner_sla"
android:popupElevation="3dp" />
महत्वपूर्ण::
पहले हमें हमारे अपने लटकती गुणों के साथ Spinner
निर्दिष्ट कर सकते हैं हम CustomSpinner
class from this post उपयोग करते हैं, क्योंकि हम कॉलबैक की जरूरत है पता करने के लिए जब स्पिनर एक बंद (स्टाइल प्रयोजनों के लिए) को खोलता है।
फिर हम स्पिनर सेट करते हैं: हम अपनी शैलियों को लागू करने के लिए चयनित आइटम (नीचे परिभाषित लेआउट) के लिए कस्टम व्यू का उपयोग करते हैं, और ऐपकॉमपेट के डिफ़ॉल्ट R.layout.support_simple_spinner_dropdown_item
, लेकिन हम स्टाइल को और समायोजित करने के लिए एक और लेआउट का उपयोग कर सकते हैं।
String[] data = {"Arial", "Calibri", "Helvetica", "Roboto", "Veranda"};
ArrayAdapter adapter = new ArrayAdapter<>(getContext(), R.layout.spinner_item_selected, data);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
final CustomSpinner spinner = (CustomSpinner) view.findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setSpinnerEventsListener(new CustomSpinner.OnSpinnerEventsListener() {
public void onSpinnerOpened() {
spinner.setSelected(true);
}
public void onSpinnerClosed() {
spinner.setSelected(false);
}
});
और यहाँ spinner_item_selected.xml
लेआउट:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="?attr/dropdownListPreferredItemHeight"
android:background="@drawable/abc_spinner_mtrl_am_alpha"
android:ellipsize="marquee" />
इसके अलावा हम ऊपर का इस्तेमाल किया ड्रॉएबल की जरूरत है: स्पिनर की पृष्ठभूमि के रूप में
spinner_bg.xml
:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:state_pressed="true" android:drawable="@android:color/white" />
<item android:state_selected="true" android:drawable="@android:color/white" />
<item>
<inset android:insetLeft="-1dp" android:insetRight="-1dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#cccccc" />
<solid android:color="#f0f0f0" />
</shape>
</inset>
</item>
</selector>
spinner_sla.xml
चेतन करने के लिए स्पिनर की ऊंचाई:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<set>
<objectAnimator
android:duration="@android:integer/config_mediumAnimTime"
android:propertyName="translationZ"
android:valueTo="3dp" />
</set>
</item>
<item android:state_selected="true">
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="3dp" />
</set>
</item>
<item>
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0" />
</set>
</item>
</selector>
यह हमें इस तरह एक परिणाम (बाएं ध्वस्त हो गई, सही खुला) देता है:
हम छवियों के साथ एक स्पिनर का उपयोग करना चाहते हैं, तो हम भी एक कस्टम लटकती को परिभाषित करने के लिए होगा आइटम दृश्य
आप कस्टम दृश्य और शैलियों के साथ एक PopupMenu http://developer.android.com/intl/es/reference/android/widget/PopupMenu.html
PopupMenu popup = new PopupMenu(context, view);
for (Element e: elementsList) {
popup.getMenu().add(e.id).setTitle(e.title);
}
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
return true;
}
});
popup.show();
- 1. Google play (Google+ त्रुटि)
- 2. google oAuth - google oAuth
- 3. Google
- 4. Google
- 5. Google
- 6. google +
- 7. Google+
- 8. Google
- 9. google
- 10. Google टैग प्रबंधक Google Analytics
- 11. सेवा Google खाते पर Google Google कैलेंडर एपीआई "access_denied"
- 12. Google API: Google टॉक/चैट और Google Hangout
- 13. Google ब्लॉबस्टोर बनाम Google क्लाउड स्टोरेज
- 14. लक्ष्य 'Google Inc. :Google APIs: 15'
- 15. Google मानचित्र API Autocomplete Google मानचित्र खोज
- 16. नया Google नाओ और Google+ कार्ड इंटरफ़ेस
- 17. Google स्क्रिप्ट कोड से Google सर्वर एपीआई
- 18. लक्ष्य 'Google Inc. :Google APIs: 16'
- 19. Google क्लाउड डेटास्टोर बनाम Google ऐप इंजन
- 20. Google+ पर पोस्ट करें (Google प्लस)
- 21. Google Play गेम्स फ़ीचर बैज Google play
- 22. Google मानचित्र एपीआई बनाम Google मानचित्र इंजन?
- 23. Google सी ++ मॉकिंग फ्रेमवर्क (Google मॉक) (V1.5)
- 24. Google रीयलटाइम API बिना Google प्रमाणीकरण
- 25. Google डॉक्स
- 26. Google Apps
- 27. Google टेस्ट
- 28. Google Analytics
- 29. Google डॉक्स
- 30. Google Code