2012-08-22 33 views
6

lolएंड्रॉयड स्पिनर: केंद्र पाठ खड़ी स्पिनर

भीतर मैं इन स्पिनरों की जरूरत खड़ी पाठ केंद्रित करने के लिए।

<Spinner 
    android:id="@+id/dir_spn" 
    android:layout_gravity="center_vertical" 
    android:gravity="center_vertical" 
    android:layout_weight="1"/> 

मैं एक कस्टम ड्रॉप डाउन लेआउट के निर्माण की कोशिश की:

<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="@style/SpinnerDropDownItem" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

styles.xml:

<resources> 
<style name="SpinnerDropDownItem"> 
    <item name="android:gravity">center_vertical</item> 
    <item name="android:layout_gravity">center_vertical</item> 
    <item name="android:textColor">?android:attr/textColorPrimary</item> 
    <item name="android:textColorHighlight">#FFFF9200</item> 
    <item name="android:textColorHint">?android:attr/textColorHint</item> 
    <item name="android:textColorLink">#5C5CFF</item> 
    <item name="android:textSize">16sp</item> 
    <item name="android:textStyle">normal</item> 
</style> 
</resources> 

एडाप्टर लटकती सेट मैं स्पिनर एक्सएमएल परिभाषा इस तरह सामान की कोशिश की है :

adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 

हो क्या मैं स्पिनर टेक्स्ट को लंबवत केंद्र में प्राप्त करूं?

संपादित करें: यह उल्लेख के लायक है कि गतिविधि thusly प्रकट में थीम्ड है हो सकता है:

<resources> 
<style name="SpeakNSpell" parent="@android:style/Theme"> 
    <item name="android:minHeight">68sp</item> 
</style> 
</resources> 

जो बनाता है सभी दृश्य कम से कम 68sp उच्च। क्या यह स्पिनर के अंदर पाठ को भी प्रभावित कर रहा है?

+0

मैं इसे सरल रूप को कम करने और वहाँ से जाना होगा। सबसे पहले स्टाइल और फैंसी विजेट के बिना इसे आज़माएं। एक साधारण टेक्स्ट व्यू लेआउट बनाएं और गुरुत्वाकर्षण को गुरुत्वाकर्षण पर सेट करें और देखें कि क्या यह काम करता है। साथ ही, ड्रॉप डाउन लेआउट * नहीं * स्पिनर बंद होने पर प्रदर्शित होता है (जैसा कि आप इसे दिखा रहे हैं)। शायद आपको स्पिनर बंद होने पर उपयोग की जाने वाली लेआउट में अपनी शैली को लागू करने की आवश्यकता है? – Barak

+0

मुझे आपके स्पिनर का 'एंड्रॉइड नहीं दिख रहा है: layout_width = "wrap_content" 'और' android: layout_height = "wrap_content" ' – slybloty

उत्तर

8

पुनर्लेखन

आप आइटम संसाधन में खड़ी पाठ केंद्रित करने के लिए चाहते हैं लगता है, आप नीचे देख सकते हैं, लेकिन अपने कोड उदाहरण लटकती लक्षित करता है मेनू ...

Compare Layouts

शीर्ष स्पिनर डिफ़ॉल्ट एंड्रॉइड simple_spinner_item लेआउट है और नीचे वही है लेकिन android:gravity="center_vertical" जोड़ा गया है।

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerItemStyle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ellipsize="marquee" 
    android:gravity="center_vertical" 
    android:singleLine="true" /> 

आप देख सकते हैं कि मैंने आपकी थीम को बड़े minHeight के साथ उपयोग किया है। यहाँ एक एडाप्टर में इस लेआउट का उपयोग करने के लिए एक बुनियादी उदाहरण है:

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, list); 
// set whatever dropdown resource you want 
spinner.setAdapter(adapter); 

मैं इस धारणा है कि आप "कैश", "उत्पाद का चयन करें" चाहते हैं के साथ चला गया, आदि से अपनी तस्वीर केंद्रित है, मुझे पता है अगर तुम जहां की कोशिश कर रहा कुछ और करने के लिए!

0

में अपने SpinnerAdapter कुछ इस तरह का प्रयास करें:

public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     View v = super.getDropDownView(position, convertView,parent); 
     ((TextView) v).setGravity(Gravity.CENTER); 
     return v; 
} 
3

किसी को अभी भी gravity सेट करने के बाद समस्या हो रही है, तो Spinner की गद्दी सेट करने का प्रयास:

   android:paddingTop="0dp" 
       android:paddingBottom="0dp" 
+0

अगर मैं इसे 5 बार वोट दे सकता हूं, तो मैं चाहता हूं। मैंने स्पिनर के साथ लड़ने के लिए घंटों बिताए और एंड्रॉइड का सम्मान करने की कोशिश की: गुरुत्वाकर्षण = "center_vertical" का कोई फायदा नहीं हुआ। समाधान इस तरह के रूप में सरल था।मुझे लगता है कि यह गलत व्यवहार था क्योंकि मैंने पृष्ठभूमि पैच को 9 पैच पर सेट किया था। उसके बाद, स्पिनर ने शीर्ष पर टेक्स्ट सामग्री रखने पर जोर दिया। इस पोस्ट के लिए आपका बहुत - बहुत धन्यवाद! – Mitselplik

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