दिलचस्प पोस्ट
एंड्रॉइड: वाइ वेबव्यू इन डायलॉग या पॉपअप एक बड़ा HTML- स्ट्रिंग से एक jQuery ऑब्जेक्ट बनाना RepaintManager से अपवाद कैसे उत्पन्न करें जावास्क्रिप्ट में हार्वेसिने फॉर्मूला का उपयोग करना मैटलैब में 'पकड़' के बराबर पायथन सभी उपकरणों को फिट करने के लिए एंड्रॉइड स्प्लैश स्क्रीन छवि आकार VB.NET 'के साथ' विवरण – गले लगाओ या बचें? स्विफ्ट में एक समयबद्ध ईवेंट को रद्द करें? साझा स्मृति को आवंटित करना आईओएस पृष्ठभूमि ऑडियो नहीं खेल रहा है क्या आईओएस में कस्टम स्पंदन के लिए एपीआई हैं? जीवनचक्र गतिविधि, गतिविधि, एक्शनबार गतिविधि और अप कॉमपैक्ट ऐक्टिविटी के बीच का अंतर? जब आप "साथ (नोलॉक)" का उपयोग करना चाहिए मैं PHP में उपवर्तन संशोधन संख्या कैसे प्राप्त करूं? url से htaccess निकालें index.php

कैसे विजेट के दाईं ओर नीचे त्रिभुज के बिना एंड्रॉइड स्पिनर बनाने के लिए

मेरे पास एक स्क्रीन है जहां उपयोगकर्ता के इनपुट के लिए कई आइटम हैं, इसलिए स्क्रीन पर स्क्रीन प्रीमियम पर है

मैं स्पिनर के दाईं ओर स्पिनर विजेट (सामान्य नीचे त्रिकोण के बिना) के किसी संपादन टेक्स्ट या बाएं भाग के समान होने के लिए स्क्रीन पर विजेट के दृश्य (उपयोगकर्ता को दबाए जाने से पहले) देखना चाहता हूं। तब जब उपयोगकर्ता विजेट को दबाता है, तो उसे सामान्य स्पिनर चयन संवाद मिलेगा।

क्या कुछ स्पिनर शैली विशेषताएँ मैं इसे पूरा करने के लिए बदल सकता हूँ?

मैं इस तरह से कोड को देखने में सक्षम नहीं है।

धन्यवाद

वेब के समाधान से एकत्रित समाधान "कैसे विजेट के दाईं ओर नीचे त्रिभुज के बिना एंड्रॉइड स्पिनर बनाने के लिए"

एक बात आप कर सकते हैं Spinner के स्रोत कोड को एंड्रॉइड कोड बेस लेते हैं, साथ में संबंधित लेआउट्स और संसाधनों के साथ, और अपने खुद के कस्टम विजेट बनाने के लिए इसका उपयोग करें (संभवतः आपको केवल लेआउट से तीर को निकालने और कोड को टच करने की आवश्यकता होगी आपकी ज़रूरतों के आधार पर थोड़ा सा)

संपादित करें: आप सही हैं, उस पोस्ट के बाद यह वास्तव में वास्तव में सरल था 🙂 आपको दो चीजों को करना होगा सबसे पहले, res / values ​​के अंतर्गत styles.xml फ़ाइल बनाएं, इसे खोलें और निम्न जोड़ें:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style parent="@android:style/Widget.Spinner" name="SpinnerAsEditText"> <item name="android:background">@android:drawable/edit_text</item> </style> </resources> 

इसके बाद, आपके लेआउट में स्पिनर को इस तरह जोड़ें:

 <Spinner style="@style/SpinnerAsEditText" anyOtherAttributeYouNeed="..."></Spinner> 

यही बात है, अब स्पिनर एक सादे संपादन टेस्ट की तरह दिखता है, बिना कूड़ा हुआ और परेशान नीचे तीर के।

यह काफी पुराना सवाल है, लेकिन मुझे अभी भी प्रासंगिक लगता है, इसलिए मेरा जवाब है:

सरल तरीका

लेंसिन्हौस का जवाब सही है यह काम करता है, लेकिन यह एक सरल तरीके से किया जा सकता है: बस इसके लिए एक और पृष्ठभूमि जोड़ें नीचे दिए गए उदाहरण एक अधिक सजातीय रूप और अनुभव के लिए मानक Button पृष्ठभूमि का उपयोग करता है:

 <Spinner android:id="@+id/my_spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:prompt="@string/my_prompt" android:background="@android:drawable/btn_default" /> 

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

क्यूं कर?

9-पैच पीएनजी के वर्णन में यह कैसे काम करता है यह समझने की चाबी । पैडिंग के लिए दाईं ओर और नीचे की रेखाओं का उपयोग किया जाता है, यानी, कुछ जगहों को अपनी सामग्री द्वारा उपयोग किए जाने से रखने के लिए। इस मामले में, अंदर पाठ। मानक स्पिनर पृष्ठभूमि एक छवि का प्रयोग करता है जो उस तीर के दाईं ओर है जो उपयोगी पाठ क्षेत्र के बाहर है। एक उदाहरण के लिए चित्र 1 नीचे देखें:

चित्रा 1. मूल स्पिनर बेकफोर्ड 9-पैच पीएनजी http://img.hiwab.com/android&usg=ALkJrhgErRZnP8Ugmv1kU0W1NtaRQ3CN9A/404.gif
चित्रा 1. मूल Spinner बेकिंग 9-पैच PNG

पैडिंग बनी हुई है, क्योंकि बस तीर को हटा देना पर्याप्त नहीं है। आपको एक 9-पैच की नई छवि का उपयोग एक कमी हुई पैडिंग के साथ करना होगा (अंजीर 1 के आधार पर उदाहरण के लिए आंकड़ा 2 देखें) या बहुत अधिक पैडिंग के बिना पूर्व-कंप्यूट किए गए 9-पैच छवियों में से एक का उपयोग करें, जैसे कि EditText ( @android:drawable/edit_text ) या Button ( @android:drawable/edit_text @android:drawable/btn_default )।

चित्रा 2. संशोधित स्पिनर बेकफूड 9-पैच पीएनजी कम पैडिंग के साथ http://img.hiwab.com/android&usg=ALkJrhgErRZnP8Ugmv1kU0W1NtaRQ3CN9A/2jfaxkw.png
चित्रा 2. संशोधित Spinner बेकफूड 9-पैच पीएनजी कम पैडिंग के साथ।

इसे समझने से आप Spinner (और वास्तव में, किसी भी विजेट के लिए) के लिए अपनी खुद की पृष्ठभूमि बना सकते हैं।

9-पैच फ़ाइलों की बेहतर व्याख्या यहां पाई जा सकती है

SDK से Draw9patch निष्पादन योग्य के साथ फाइल बनाने में बहुत आसान है ( इसके बारे में यहां पढ़ें ), लेकिन कुछ भी आपको फ़ोटोशॉप या जिम्प का इस्तेमाल करने से रोकता है। याद रखें, 9-पैच पीएनजी सिर्फ सादे पीएनजी हैं! एकमात्र चेतावनी यह सुनिश्चित करने के लिए है कि आप केवल पिक्सल की बाहरी रेखाओं को आकर्षित करते हैं और बाकी पिक्सल पूरी तरह से पारदर्शी होते हैं। सीमा के निकट एंटीलिअसिंग अप्रत्याशित परिणाम उत्पन्न कर सकती है।

मैं सिर्फ इस प्रश्न पर पहुंचा, क्योंकि मेरे स्पिनर त्रिकोण सूचक को नहीं दिखा रहा था, अब मुझे समझ में आ रहा है कि: मैं पृष्ठभूमि को "सफेद" पर सेट कर रहा था:

 android:background="#FFFFFFFF" 

इससे त्रिकोण सूचक (स्पिनर की पृष्ठभूमि की छवि और अलैडम द्वारा वर्णित पैडिंग) को हटा दिया गया है

मेरी समस्या के लिए, मैं इसे पृष्ठभूमि को "सफ़ेद" पर सेट करने के लिए एक माता पिता की रेखाचित्ररेखा जोड़कर हल करता हूं

इसे एक पृष्ठभूमि दें, तीर गायब हो जाएगी।

 android:background="@drawable/bg" 

जब आप वास्तव में स्पिनर पर क्लिक करते हैं, तो उस जगह के संबंधित मुद्दे पर, मैंने दुर्घटना से पाया कि आप उन बड़े चयन संकेतकों को सही पर हटा सकते हैं आप एक मूल सूची को लाइनों से विभाजित करते हैं लेकिन आप किसी आइटम पर क्लिक कर सकते हैं और यह अभी भी काम करता है।

चयनकर्ताओं को पाने के लिए इस तरह एक स्पिनर सेट करें:

  Spinner s1 = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource( this, R.array.petals, android.R.layout.simple_spinner_item); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s1.setAdapter(adapter1); 

कोई भी संकेतक के लिए सेटड्रॉपडाउन दृश्य रिसोर्स लाइन को छोड़ दें।

मुझे एक ही समस्या थी और शैली को इसमें बदल दिया गया था:

 style="@style/Widget.AppCompat.Light.DropDownItem.Spinner" 

और यह काम किया

कैसे अजीब, इसकी DropDownItem में स्थित

जबकि नीचे वाले त्रिकोण को सामान्य नाम दिया गया है

चीयर्स!

आप सूची के साथ संवाद के लिए क्यों नहीं जाते? अपनी आवश्यकता के अनुसार, एक edittext फ़ील्ड बनाएं, setOnFocusChangeListener जोड़ें और फिर onFocusChange () विधि में सूची आइटम के साथ एक संवाद दिखाएं। सूची आइटम के साथ संवाद के लिए

 new AlertDialog.Builder(this) .setTitle("<Title>") .setItems(R.array.<ItemsArrayName>, new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub }}).show();