2015-10-27 35 views
13

के लिए शीर्ष/नीचे पैडिंग मैं एंड्रॉइड में स्पिनर के लिए पहली/आखिरी वस्तु के ऊपर/नीचे एक अतिरिक्त पैडिंग के लिए कैसे निर्दिष्ट करूं? नीचे गोल्ज का नमूना देखें (8 डीपी स्पेसिंग)। Google Simple Menuस्पिनर

+0

इन लिंक को आजमाएं [1 लिंक] (http://stackoverflow.com/questions/17407626/custom-layout-for-spinner-item) [2 लिंक] (http://stackoverflow.com/questions/8946893/ एंड्रॉइड-कस्टम-स्पिनर-लेआउट) [नमूना कार्यक्रम] (http://mrbool.com/how-to-customize-spinner-in-android/28286) उम्मीद है कि यह मदद पूर्ण –

उत्तर

3

स्पिनर एकाधिक दृश्य प्रकारों का समर्थन नहीं करता है। Issue

मैंने आपको अपनी सूची दिखाने के लिए संवाद का उपयोग करने का सुझाव दिया है।

संपादित

अपनी टिप्पणी के अनुसार इस question

+0

एकमात्र समाधान यह एक प्रतीत होता है। मैंने इसे आपके लिंक का पालन किया।http://stackoverflow.com/a/16400899/519790 – multiholle

2

आपको अपने कस्टम लेआउट का उपयोग करके Spinner के लिए कस्टम एडाप्टर बनाने की आवश्यकता है। इस प्रकार, आपको उचित मार्जिन/पैडिन के साथ एक लेआउट प्रदान करने की आवश्यकता है।

Spinner spinner = (Spinner) findViewById(R.id.myspinner); 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.data, R.layout.spinner_item); 
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 
spinner.setAdapter(adapter); 

आपको एक मान्य उदाहरण here पा सकते हैं।

1

स्पिनर में प्रदर्शित वस्तुओं के लिए बस एक अलग लेआउट बनाएं।

कुछ इस

spinner_text_view.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/customTextView" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:padding="15dp" 
android:text="@string/sample_list_item" 
android:textColor="@android:color/black" 
android:textSize="20sp" /> 
फिर अपनी गतिविधि/टुकड़ा में

, आप एक एडाप्टर (एक सरणी एडाप्टर इस मामले में सरल होने के लिए) बना सकते हैं की तरह है और उस के लिए इस लेआउट पारित एडाप्टर संदर्भ। अंत में उस एडाप्टर को स्पिनर पर सेट करें और आप वांछित परिणाम प्राप्त कर सकते हैं।

नमूना कोड।

private void setupSpinner() { 
    String[] sampleSpinnerItems = {"One", "Two", "Three", "Four", "Five"}; 
    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, 
      R.layout.spinner_text_view, sampleSpinnerItems); 
    sampleSpinner.setAdapter(spinnerAdapter); 
}  

उम्मीद है कि इससे मदद मिलती है।

नोट: spinner_text_view वह लेआउट फ़ाइल है जिसे आपने पहले बनाया था।

+0

इससे मुझे अतिरिक्त पैडिंग नहीं मिलती है पहले और आखिरी वस्तु के बाद। – multiholle

1

आपको इस और कस्टम लेआउट के लिए कस्टम एडाप्टर की आवश्यकता है। आप 2 लेआउट का उपयोग कर सकते हैं। मान लीजिए कि आपके पास स्पिनर दिखाने के लिए एन तत्व हैं, आपके पास एन + 2 होगा। यदि स्थिति 0 (पहला तत्व) है या अंतिम तत्व आप खाली लेआउट दिखाएंगे अन्यथा आप अन्य लेआउट दिखाएंगे। खाली स्थान जो आप इस स्थान को बनाने के लिए उपयोग करेंगे

1

साथ आपकी समस्या हल आप Spinner के लिए इस कस्टम Adapter के प्रयोग से कर सकते हैं। यह इस तरह दिखेगा:

अतिरिक्त गद्दी स्थापित करने के साथ
class YourAdapter extends BaseArrayAdapter<YourObject> { 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.your_item, parent, false); 
      DropDownViewHolder holder = new DropDownViewHolder(); 
      holder.root = convertView.findViewById(R.id.drop_down_root); 
      // other assignments etc. 
      convertView.setTag(holder); 
     } 
     DropDownViewHolder holder = (DropDownViewHolder) convertView.getTag(); 
     int bottomPadding = 0; 
     int topPadding = 0; 
     if (position == 0) { 
      topPadding = getContext().getResources().getDimensionPixelSize(R.dimen.margin_8); 
     } else if (position == (getCount() - 1)) { 
      bottomPadding = getContext().getResources().getDimensionPixelSize(R.dimen.margin_8); 
     } 

     holder.root.setPadding(0, topPadding, 0, bottomPadding); 
     // other UI related logic etc. 
     return convertView; 
    } 

    // ... 

    public static class DropDownViewHolder { 
     View root; 
     // other views 
    } 
} 

असल में तर्क VISIBLE करने के लिए कुछ ठूंठ दृश्य दृश्यता बदलने या स्थिति के आधार पर कुछ अन्य लेआउट बढ़ा-चढ़ाकर को बदला जा सकता है, लेकिन गद्दी के साथ समाधान मेरे लिए और अधिक प्राकृतिक लग रहा है।

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