2015-03-20 21 views
19

में स्पेसिंग या पैडिंग निकालें मैं समर्थन lib v21 से एंड्रॉइड स्पिनर और एडिटेक्स्ट का उपयोग कर रहा हूं। मैं आंकड़े में दिखाए गए संपादन के समान टेक्स्ट को संरेखित करना चाहता हूं। लेकिन, बहरे स्पिनर में अंतर या पैडिंग शामिल है। इसलिए, मैं इसे बाईं ओर टेक्स्ट संरेखित करने के लिए निकालना चाहता हूं। कृपया इसे हटाने में मदद करें।एंड्रॉइड स्पिनर

enter image description here

उत्तर

1

इस प्रयास करें,

  1. स्पिनर पंक्ति के लिए कस्टम लेआउट बनाएँ (के रूप में आप की जरूरत है)।

  2. जब आप डेटा एडाप्टर को स्पिनर पर सेट करते हैं तो लेआउट को बढ़ाएं।

0

आप नौ पैच के माध्यम से अपने खुद के स्पिनर अनुकूलित और

10

निर्दिष्ट गद्दी अपने SpinnerAdapter में कर सकते हैं:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 
     view.setPadding(0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom()); 
     return view; 
} 
+0

मेरे मामले में काम किया .. लेकिन शायद सुपर दृश्य अनावश्यक है। बस 'convertView.setPadding()' को सेट करना चाहिए। –

+0

@Chan आप किस एडाप्टर का उपयोग करते हैं? –

+0

@ वोलोडिमिरखोडोनोविच स्पिनरएडाप्टर –

3

कोड के नीचे का प्रयास करें ऐसा करने के लिए। आप कस्टम एडाप्टर का उपयोग कर रहे हैं, तो

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/textViewStyle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:singleLine="false" 
    android:textAlignment="inherit" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 
+0

काम नहीं कर रहा है - 30.11.2017 – JohannaNoobie

2

नीचे के रूप में textViewStyle करने के लिए अपने स्पिनर सूची आइटम लेआउट में शैली विशेषता बदलें, इसके बाद getView() में गद्दी सेट करने का प्रयास: TextView कि में प्रदर्शित किया जाता है के लिए

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = super.getView(position, convertView, parent); 
    view.setPadding(0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom()); 
    return view; 
} 
1

लेआउट अपने

  • getView(position, convertView, parent): Spinner अपने SpinnerAdapter, जो 2 तरीके प्रदान से आता रिटर्न देखें संक्षिप्त रूप के लिए, तो आप इस ओवरराइड कर सकते हैं विभिन्न चयनित आइटम के लिए विभिन्न लेआउट वापस जाने के लिए
  • getDropdownView(position, convertView, parent): विस्तृत स्थिति में प्रत्येक लटकती आइटम के लिए देखें लौट

में (आप चयन के लिए पॉपअप/संवाद खोलने के लिए स्पिनर क्लिक करने के बाद) आपका मामला आपको अपने SpinnerAdapter.getView(position, convertView, parent) को ओवरराइड करना चाहिए और अपनी पसंद के पैडिंग/रिक्ति के साथ लेआउट को फुलाएं।

उदाहरण के लिए:

spinner.setAdapter(new MyAdapter()); 

MyAdapter.java

class MyAdapter implements SpinnerAdapter { 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.spinner_item, parent, false); 
     } 
     // bind your data here 
     return convertView; 
    } 
    // other implementation 
} 

रेस/लेआउट/spinner_item.xml

<!-- set padding margin whatever here --> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

तुम भी आसानी से में से एक का उपयोग कर सकते ढांचा सिद्ध ided SpinnerAdapter indirect subclasses (ArrayAdapter<T>, BaseAdapter, CursorAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, ThemedSpinnerAdapter), बस सही लेआउट की आपूर्ति सुनिश्चित करें जो getView() विधि द्वारा उपयोग की जाएगी।

1

यो जावा कोड में गड़बड़ नहीं करना चाहते हैं और यह शैली में है इस फ़ाइल के लिए

खोजें तो (Cmd + Shift + O) abc_spinner_textfield_background_material.xml

और अपनी परियोजना के लिए नकल। रूट तत्व से सभी इन्सेट मान निकालें और फ़ाइल को अपने स्पिनर की पृष्ठभूमि के रूप में देखें।

मेरे मामले में यह इस (drawable/spinner_background.xml)

<inset xmlns:android="http://schemas.android.com/apk/res/android"> 
    <selector> 
     <item 
      android:state_checked="false" 
      android:state_pressed="false"> 
      <layer-list> 
       <item android:drawable="@drawable/abc_textfield_default_mtrl_alpha" /> 
       <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" /> 
      </layer-list> 
     </item> 
     <item> 
      <layer-list> 
       <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha" /> 
       <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" /> 
      </layer-list> 
     </item> 
    </selector> 
</inset> 

तरह लग रहा है और मेरे styles.xml में मैं इसे इस तरह से

<style name="DxSpinner" parent="@style/Widget.AppCompat.Spinner.Underlined"> 
    <item name="android:background">@drawable/spinner_background</item> 
</style> 
2

तुम भी एक्सएमएल

में स्पिनर की गद्दी से हटा सकते हैं का उपयोग करें

केवल 0 डीपी पर पैडिंग सेट करने की आवश्यकता है।

<Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left" 
     android:padding="0dp"  
     android:id="@+id/my_spinner"> 
0

यह काम मुझे

Spinner spn = (Spinner) findViewById(R.id.spn); 

spn.setPadding(0, spn.getPaddingTop(), spn.getPaddingRight(), spn.getPaddingBottom()); 
0

के लिए मैं बस के रूप में अच्छी तरह से इस मुद्दे को टक्कर मार दी। मैं वास्तव में पैडिंग के बजाय मार्जिन समायोजित करने के साथ इसे हल करने में सक्षम था, इसलिए एंड्रॉइड सेटिंग: स्पिनर आइटम में marginStart = "0dp"।

0

यह सरणी एडाप्टर एंड्रॉइड स्पिनर में बाएं पैडिंग को हटा देता है।

Kotlin संस्करण:

open class NoPaddingArrayAdapter<T>(context: Context, layoutId: Int, items: List<T>?) : ArrayAdapter<T>(context, layoutId, items) { 

    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? { 
     val view = super.getView(position, convertView, parent) 
     view.setPadding(0,view.paddingTop,view.paddingRight,view.paddingBottom) 
     return view 
    } 
} 
संबंधित मुद्दे