स्पिनर टेक्स्ट का आकार और टेक्स्ट का रंग कैसे बदलें?


432

अपने Android एप्लिकेशन में, मैं स्पिनर का उपयोग कर रहा हूं, और मैंने SQLite डेटाबेस से स्पिनर में डेटा लोड किया है, और यह ठीक से काम कर रहा है। यहाँ उस के लिए कोड है।

Spinner spinner = (Spinner) this.findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>  (this,android.R.layout.simple_spinner_item, list);
cursor.moveToFirst();

list.add("All Lists");

if (cursor.getCount() > 0) {
    for (int i = 0; i < cursor.getCount(); i++) {
        keyList[i] = cursor.getString(cursor.getColumnIndex(AndroidOpenDbHelper.KEYWORD));
        list.add(keyList[i]);
        cursor.moveToNext();
    }
}
Database.close();
cursor.close();
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);

अब मैं स्पिनर डेटा के टेक्स्ट रंग और टेक्स्ट आकार को बदलना चाहता हूं। मैंने अपनी XML फ़ाइल पर अपने स्पिनर टैग के लिए XML लाइनों का पालन किया है, लेकिन यह काम नहीं कर रहा है।

android:textColor="@android:color/white"
android:textSize="11dp"

मैं अपने स्पिनर के टेक्स्ट का रंग और टेक्स्ट का आकार कैसे बदल सकता हूं?


निम्नलिखित साइटों की जाँच करें [StackoverFlow] [1] [stackoverflow] [2] [stackoverflow] [3] मुझे लगता है कि यह डुप्लिकेट प्रश्न है [1]: stackoverflow.com/questions/4880413/… [2]: stackoverflow.com/questions / 4989817 /… [3]: stackoverflow.com/questions/5836254/…
user1203673

इस पोस्ट का प्रयास करें stackoverflow.com/questions/6159113/…
अजय

1
TextSize के लिए सही SP का उपयोग करना है ... android: textSize = "11sp"
डिएगो

जवाबों:


780

अपने स्पिनर आइटम के लिए एक कस्टम XML फ़ाइल बनाएं।

spinner_item.xml:

इस फ़ाइल में टेक्स्ट के लिए अपना अनुकूलित रंग और आकार दें।

<?xml version="1.0" encoding="utf-8"?>

<TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="left"  
    android:textColor="#FF0000"         
    android:padding="5dip"
    />

अब अपने स्पिनर आइटम दिखाने के लिए इस फ़ाइल का उपयोग करें:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item,list);

आपको ड्रॉप डाउन संसाधन सेट करने की आवश्यकता नहीं है। यह spinner_item.xmlकेवल स्पिनर में आपके आइटम दिखाने के लिए ले जाएगा ।


2
@ वायरल पाठ केवल वर्तमान चयनित आइटम के लिए सफेद होगा।
tesla

8
@SANTHOSH अच्छी तरह से आपको TextView में आईडी जोड़ना है, बस वहाँ संलग्न करना है android:id="@+id/customSpinnerItemTextView"। यदि आपने इसे डिबेट किया था तो आपको यह पता होगा।
vilpe89

3
@ vilpe89 क्या आप अपने उपरोक्त कोड को संशोधित करके दिखा सकते हैं कि आपका क्या मतलब है? यह एंड्रॉइड कहां है: आईडी जाना स्पिनर टैग में निश्चित रूप से नहीं, क्योंकि इसकी अपनी आईडी है। लेकिन यह आपके द्वारा ऊपर बनाए गए टेक्स्टव्यू टैग में जोड़ने का कोई मतलब नहीं है। मैं इस संदर्भ का उपयोग कैसे करूं कि मैं XML से सीधे इस टैग का उपयोग करना चाहता हूं? इसके अलावा, ग्रहण से XML बनाते समय, मुझे XML फ़ाइल बनाने के लिए कोई विकल्प नहीं दिखाई देता है, जिसमें केवल एक TextView फ़ाइल होती है, यह कैसे करता है ???
माइकल

29
जरा ध्यान दें। टेक्ससाइज़ को dp / dip की बजाय sp का उपयोग करना चाहिए
ymerdrengene

18
यह केवल शैली का उपयोग करके नहीं किया जा सकता है? मुझे आश्चर्य है कि एंड्रॉइड में स्टाइल करने के लिए छोटा सामान कितना मुश्किल है .. यह निराशाजनक है .. मैंने चाहा कि उनके पास सीएसएस जैसी स्टाइलिंग प्रणाली हो
yahman

183

सरल और कुरकुरा ...:

private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

       ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE);
       ((TextView) parent.getChildAt(0)).setTextSize(5);

    }

    public void onNothingSelected(AdapterView<?> parent) {

    }
};

19
मेरे लिए यह सबसे अच्छा समाधान है, क्योंकि मुझे स्पिनर में पाठ का रंग बदलने की जरूरत है, लेकिन दिखने वाली सूची में नहीं। धन्यवाद।
peter.bartos

7
मेरे लिए, आइटम रंग ब्लिंक करता है, जो मूल रंग से मेरे द्वारा चुने गए रंग पर जा रहा है
फेलिप कोंडे

@FelipeConde क्या आपको कभी जवाब मिला? मेरे पास भी वही प्रश्न है। मेरा सवाल यहाँ है: stackoverflow.com/questions/33908564/…
रॉक ली

@ फ़ेलिपीकॉन्ड्स आपके लिए, यह पहली बार एसेंट रंग लेता है, फिर आप अन्य रंग में मैन्युअल रूप से बदलते हैं, इसलिए यह बहुत थका हुआ दिखता है। सबसे पहले यह <आइटम का नाम = "colorAccent"> @ रंग / color_primary </ आइटम> लेता है, फिर आप मैन्युअल रूप से प्रोग्रामेटिक द्वारा बदल दिया जाता है, जिससे आपको लगता है
अशरफ

2
यह मेरे लिए काम करता है, लेकिन मेरी समस्या तब है जब मैं एक खंड ऐप से लौटता हूं क्योंकि इसे उपरोक्त कोड पर एक अशक्त सूचक मिलता है
अक्षय शाह

145

यदि सभी स्पिनरों के पास उनके TextView आइटम के लिए एक ही टेक्स्ट का रंग हो सकता है, तो दूसरा तरीका स्पिनर ड्रॉपडाउन आइटम के लिए एक कस्टम शैली का उपयोग करना है:

इन res/values/styles.xml:

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Light">
    </style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
    </style>

    <style name="mySpinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
        <item name="android:textColor">@color/my_spinner_text_color</item>
    </style>
</resources>

और अपने कस्टम रंग को रेस / मान / color.xml में परिभाषित करें:

<color name="my_spinner_text_color">#808080</color>

2
और इस समाधान को Appcompt विषय पर कैसे लागू किया जाए? मैंने मूल विषय "@ style / Widget.AppCompat.DropDownItem.Spinner" को ओवरराइड करके इसे डीट्रेड किया और यह काम नहीं किया
GyRo

11
मैं यह भी जोड़ूंगा: <आइटम का नाम = "Android: spinnerItemStyle"> @ शैली / mySpinnerItemStyle </ आइटम> यह सुनिश्चित करता है कि ढह गए पाठ का रंग समान है - यदि यह वांछित व्यवहार है।
अनंत-पाश

4
मेरे लिए न तो काम करता है, न शैली को पूरी तरह से नजरअंदाज किया जाता है
diogo.abdalla

1
@ कृपया मेरे उत्तर को अनंत-पाश के सुझावों के अनुसार अपना जवाब संपादित करें, यह मेरे लिए पूरी तरह से काम करता है
चिंतन देसाई

4
android:<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
AppCompat

73

यहां एक लिंक दिया गया है जो आपको स्पिनर का रंग बदलने में मदद कर सकता है :

यहाँ क्लिक करें

<Spinner
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:textSize="20sp"
    android:entries="@array/planets"/>

आपको स्पिनर आइटम spinner_item.xml के लिए एक कस्टम परिभाषा के साथ अपनी स्वयं की लेआउट फ़ाइल बनाने की आवश्यकता है :

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:textColor="#ff0000" />

यदि आप ड्रॉपडाउन सूची आइटम को अनुकूलित करना चाहते हैं, तो आपको एक नई लेआउट फ़ाइल बनाने की आवश्यकता होगी। spinner_dropdown_item.xml :

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:maxLines="1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:ellipsize="marquee"
    android:textColor="#aa66cc"/>

और अंत में स्पिनर की घोषणा में एक और बदलाव:

ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, R.layout.spinner_item);

adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
spinner.setAdapter(adapter);

बस।


2
यह एक स्वचालित प्रतिक्रिया थी जो नए उपयोगकर्ताओं द्वारा पोस्ट की समीक्षा करने से आई थी। मुझे यह देखकर खुशी हुई कि आपने उत्तर को संपादित किया! :)
मार्को

1
ऐसा लगता है, कि android:textSize="20sp"पहले कोड में स्निपेट बेकार है: नियंत्रण के ग्रंथ को परिभाषित किया गया हैspinner_item.xml
डेनिसगल

23

यदि आप android.support.v7.widget.AppCompatSpinner के साथ काम करते हैं, तो शैलियों का उपयोग करके सबसे सरल परीक्षण किया गया समाधान है:

 <android.support.v7.widget.AppCompatSpinner
                    android:id="@+id/spefcialFx"
                    style="@style/Widget.AppCompat.Spinner.Underlined"
                    android:layout_width="200dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="4dp"
                    android:theme="@style/Spinner"
                    android:entries="@array/special_fx_arrays"
                    android:textSize="@dimen/text_size_normal"></android.support.v7.widget.AppCompatSpinner>

और शैली:

<style name="Spinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner">
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:backgroundTint">@color/red</item>
        <item name="android:textSize">14sp</item>
    </style>

केवल नकारात्मक पक्ष एंड्रॉइड है: बैकग्राउंड टिंट ड्रॉपडाउन एरो और ड्रॉपडाउन बैकग्राउंड दोनों के लिए रंग सेट करता है।


3
आप उपयोग करते हैं, style="@style/Widget.AppCompat.Spinner.Underlined"लेकिन आपके पास केवल style name="Spinner"...
user25

1
paddingStartएपीआई 17 की आवश्यकता है, backgroundTintएपीआई 21 की आवश्यकता है।
कूलमाइंड

18

पिछड़ने से रोकने के लिए, आपको न केवल onItemSelectedश्रोता में पाठ गुण सेट करने की आवश्यकता है , बल्कि गतिविधि में भीonCreate विधि में भी (लेकिन यह थोड़ा मुश्किल है)।

विशेष रूप से, onCreateएडेप्टर सेट करने के बाद आपको इसे लगाना होगा:

spinner.setSelection(0, true);
View v = spinner.getSelectedView();
((TextView)v).setTextColor(backgroundColor);

और फिर इसमें डालें onItemSelected:

((TextView) view).setTextColor(backgroundColor);

यहाँ एक पूर्ण उदाहरण है:

@Override  
protected void onCreate(Bundle savedInstanceState)
{  
    Spinner spinner = (Spinner) findViewById(R.id.spinner); 

    //Set the choices on the spinner by setting the adapter.  
    spinner.setAdapter(new SpinnerAdapter(toolbar.getContext(), new String[]{"Overview", "Story", "Specifications", "Poll", "Video"}, accentColor, backgroundColor));

    //Set the text color of the Spinner's selected view (not a drop down list view) 
    spinner.setSelection(0, true);
    View v = spinner.getSelectedView();
    ((TextView)v).setTextColor(backgroundColor);

    //Set the listener for when each option is clicked.  
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {  

        @Override  
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
        {  
           //Change the selected item's text color  
           ((TextView) view).setTextColor(backgroundColor);
        }  

        @Override  
        public void onNothingSelected(AdapterView<?> parent)
        {  
        }  
    });  

}  

अधिक जानकारी के लिए, मेरा प्रश्न देखें ।


15

यदि आप चाहते हैं कि पाठ का रंग केवल चयनित आइटम में परिवर्तित हो, तो यह एक संभावित समाधान हो सकता है। इसने मेरे लिए काम किया और आपके लिए भी काम करना चाहिए।

spinner.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                ((TextView) spinner.getSelectedView()).setTextColor(Color.WHITE);
            }
        });

6

किसी ऐसे व्यक्ति के लिए जिसे केवल Styleरास्ता चाहिए AppCompat

परिणाम
यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

styles.xml

<resources>
    ... 
    <style name="Spinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner">
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
        <item name="android:textColor">@color/material_grey_700</item>
        <item name="android:textSize">12sp</item>
    </style>
</resources>

your_spinner_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
    ...

    <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/content_spinner"
        style="@style/Widget.AppCompat.Spinner.Underlined"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:entries="@array/shipping_tracking_carrier_names"
        android:spinnerMode="dropdown"
        android:theme="@style/Spinner" />

    <EditText
        android:id="@+id/content_input"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:maxLines="1"
        android:paddingEnd="8dp"
        android:paddingStart="8dp"
        android:textColor="@color/material_grey_700"
        android:textSize="12sp" />

    ...
</LinearLayout>    

प्लस
और यदि आप android:entriesपरिभाषित शैली के साथ प्रोग्रामेटिक रूप से सेट करना चाहते हैं।
इसे इस्तेमाल करे।

AppCompatSpinner spinner = findViewById(R.id.content_spinner);
CharSequence[] entries = getResources().getTextArray(R.array.shipping_tracking_carrier_names);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<>(spinner.getContext(), android.R.layout.simple_spinner_item, entries);
adapter.setDropDownViewResource(android.support.v7.appcompat.R.layout.support_simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

जैसा कि कोड में है, उसी के Contextसाथ प्रयोग Spinnerकरना सबसे महत्वपूर्ण है।

spinner.getContext()

5

स्पिनर पाठ का रंग बदलने के लिए:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}

यह सबसे सरल है और इसने मेरे लिए काम किया, धन्यवाद!
मौसा अल्फाली

मुझे यह समाधान भी पसंद है। यह सरल है और अच्छी तरह से काम करता है।
कोर्चिक्स

4

एक छोटा आकार पाने के लिए एक कस्टम लेआउट बनाने के बजाय और यदि आप Android के आंतरिक छोटे आकार का उपयोग करना चाहते हैं, तो स्पिनर के लिए LAYOUT, आपको उपयोग करना चाहिए:

"android.R.layout.simple_gallery_item" के बजाय "android.R.layout.simple_spinner_item"।

ArrayAdapter<CharSequence> madaptor = ArrayAdapter
            .createFromResource(rootView.getContext(),
                                R.array.String_visitor,
                                android.R.layout.simple_gallery_item);

यह स्पिनर के लेआउट के आकार को कम कर सकता है। यह सिर्फ एक आसान ट्रिक है।

यदि आप ड्रॉप डाउन सूची के आकार को कम करना चाहते हैं तो इसका उपयोग करें:

madaptor.setDropDownViewResource(android.R.layout.simple_gallery_item);

4

Android.R.layout संसाधनों को फिर से उपयोग / बदलने का सबसे आसान तरीका परिभाषा है। Android Studio में, Ctrl+ करेंB on android.R.layout.simple_spinner_item.xml।

यह आपको संसाधन फ़ाइल में ले जाएगा। बस संसाधन फ़ाइल की प्रतिलिपि बनाएँ और अपने Package.R.outout फ़ोल्डर में एक नया लेआउट जोड़ें और अपनी पसंद के अनुसार टेक्स्टव्यू के TextColor को बदलें और बस इसे इस तरह से एडेप्टर में कॉल करें:

ArrayAdapter<String> adapter = new ArrayAdapter<String(Context,R.layout.spinner_item, spinnerlist);

4

उन लोगों के लिए जो DrowDownIconरंग बदलना चाहते हैं, आप इस तरह का उपयोग कर सकते हैं

spinner.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_ATOP);

क्या आप कोशिश कर सकते हैं<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AMAN सिंह

इस लाइन को अपने स्टाइल में रखेंAppTheme
AMAN SINGH

यह वह कोड है जिसने काम कियाDrawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.md_white_1000), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); }
एडिजे क्रूसर

4

निम्न प्रकार से getView पद्धति को ओवरराइड करके टेक्स्ट का रंग बदल सकते हैं:

 new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, list()){
                @Override
                public View getView(int position, View convertView, @NonNull ViewGroup parent) {
                    View view = super.getView(position, convertView, parent);
                    //change the color to which ever you want                    
                    ((CheckedTextView) view).setTextColor(Color.RED);
                    //change the size to which ever you want                    
                    ((CheckedTextView) view).setTextSize(5);
                    //for using sp values use setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
                    return view;
                }
    }

3

सरलतम: मेरे लिए काम करता है

TextView spinnerText = (TextView) spinner.getChildAt(0);

spinnerText.setTextColor(Color.RED);

1
spinner.getChildAt (0) मुझे अशक्त देता है: /
कार्ल हेनज़ ब्रीद आर्मडोंडो

2
मुझे लगता है कि यह तकनीक एपीआई 19+ के लिए है।
जोस मैनुअल अबरका रोड्रिगेज

2
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#fff"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

बस इसका उपयोग करें:

ArrayAdapter<String> adapter_category = new ArrayAdapter<String>(this,
    R.layout.spinner_list_item, categories);
adapter_category
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

1

अशरफ के समाधान की एक और विविधता यह सुनिश्चित करने के लिए होगी कि आप स्क्रीन के आकार को ध्यान में रख रहे हैं। आपको एडॉप्टर सेट करने के बाद स्पिनर को ऑनक्रिएट में लाना होगा और श्रोता को सेट करना होगा:

//set your adapter with default or custom spinner cell, then://
serverSpinner.setOnItemSelectedListener(spinnerSelector);
serverSpinner.setSelection(defaultServer);

फिर आप स्पिनर को क्लिक करने से पहले दिखाई देने वाले टेक्स्ट का आकार बदलना शुरू कर सकते हैं:

private AdapterView.OnItemSelectedListener spinnerSelector = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
        boolean largeTablet = getResources().getBoolean(R.bool.isLargeTablet);
        if (tabletSize) { ((TextView)parent.getChildAt(0)).setTextSize(16); }
        else if (largeTablet) { ((TextView)parent.getChildAt(0)).setTextSize(18); }
        else { ((TextView)parent.getChildAt(0)).setTextSize(12); }
    }
    public void onNothingSelected(AdapterView<?> parent) {

    }
};

आपको बस इस तरह लेआउट विशिष्ट फ़ोल्डर बनाने की आवश्यकता है:

मान-sw360dp

मान-sw600dp

मान-sw800dp

फिर उनमें से प्रत्येक फ़ोल्डर में "bool.xml" नामक एक xml फ़ाइल जोड़ें:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="isTablet">false</bool>
    <bool name="isLargeTablet">false</bool>
</resources>

1

पहले हमें नीचे xmlकी textviewतरह सरल संसाधन फ़ाइल बनानी होगी :

<?xml version="1.0" encoding="utf-8"?>

 <TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="left"  
    android:textColor="#FF0000"         
    android:padding="5dip"
    />   

और इसे बचाओ। अपने एडॉप्टरलिस्ट पर सेट करने के बाद।


1

आपके पास स्पिनर के लिए इस प्रकार का एडाप्टर हो सकता है, पूरी तरह से अनुकूलित:

 ArrayAdapter<String> genderAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_text, genderList) {

        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            ((TextView) v).setTextColor(Color.parseColor("#676767"));
            ((TextView) v).setTypeface(vrFont);
            return v;
        }

        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View v = super.getDropDownView(position, convertView, parent);
            ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            ((TextView) v).setTypeface(vrFont);
            ((TextView) v).setTextColor(Color.parseColor("#676767"));

            if (position == 0) {
                ((TextView) v).setTextColor(Color.parseColor("#979797"));
            }

            return v;
        }

जबकि R.layout.spinner_text है:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
style="?android:attr/spinnerItemStyle"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center_vertical|left"
android:ellipsize="marquee"
android:maxLines="1"
android:textColor="@color/whiteThree" />

1

यदि आप एक सरल विधि चाहते हैं, तो आइटम को ड्रॉपडाउन में जोड़ने के लिए, आप आमतौर पर उन्हें स्ट्रिंग्स में जोड़ें। xml। तार का उपयोग करके रंग जोड़ने के तरीके पर एक उदाहरण यहां दिया गया है। xml फ़ाइल:

आयु सीमा का चयन करें

<string-array name="age_array">

   <item> 0-6 </item>                               //No custom colour

  <item><font fgcolor='#FF4CD964'> 12+ </font></item> //With custom colour

</string-array>

प्यारा चाल ... एक बंद स्पिनर के लिए उपयोगी और तेज़, रंग को एक कच्चे रंग का मूल्य होना चाहिए स्ट्रिंग नहीं xml से
me_

0

मैंने इसे निम्नलिखित के रूप में किया है। मैंने getDropDownView () और getView () विधियों का उपयोग किया है।

getDropDownView()ओपन स्पिनर के लिए उपयोग करें ।

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null) {
    LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.context_row_icon, null);
  }
  TextView mTitle = (TextView) view.findViewById(R.id.context_label);
  ImageView flag = (ImageView) view.findViewById(R.id.context_icon);                

  mTitle.setText(values[position].getLabel(activity));

  if (!((LabelItem) getItem(position)).isEnabled()) {
    mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));
  } else {
    mTitle.setTextColor(activity.getResources().getColor(R.color.context_item));
  }
  return view;
}

और getView()बंद स्पिनर के लिए उपयोग ।

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null) {
    LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.context_row_icon, null);
  }
  TextView mTitle = (TextView) view.findViewById(R.id.context_label);
  ImageView flag = (ImageView) view.findViewById(R.id.context_icon);

  mTitle.setText(values[position].getLabel(activity));
  mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));

  return view;
}

यह कोड का ठीक से परीक्षण किया गया है और appstore में आवेदन में काम किया है
Bhavinkumar पटेल

0

इस विधि को आजमाएं। यह मेरे लिए काम कर रहा है।

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
    TextView textView = (TextView) view;
    ((TextView) adapterView.getChildAt(0)).setTextColor(Color.RED);
    ((TextView) adapterView.getChildAt(0)).setTextSize(20);
    Toast.makeText(this, textView.getText()+" Selected", Toast.LENGTH_SHORT).show();
}

0

बस इस तरह से नई शैली जोड़ें:

<style name="mySpinnerItemStyle" parent="ThemeOverlay.AppCompat.Dark">
    <item name="android:textColor">#000</item>
    <item name="android:color">#000</item>
</style>

और इसका उपयोग करें:

<Spinner
      android:id="@+id/spinnerCategories"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      style="@style/mySpinnerItemStyle"
      android:layout_margin="5dp" />

0
    String typeroutes[] = {"Select","Direct","Non Stop"};
    Spinner typeroute;

    typeroute = view.findViewById(R.id.typeroute);

    final ArrayAdapter<String> arrayAdapter5 = new ArrayAdapter<String>(
                getActivity(), android.R.layout.simple_spinner_item, typeroutes) {
            @Override
            public boolean isEnabled(int position) {
                if (position == 0) {
                    // Disable the first item from Spinner
                    // First item will be use for hint
                    return false;
                } else {
                    return true;
                }
            }

            public View getView(int position, View convertView, ViewGroup parent) {
                View v = super.getView(position, convertView, parent);
                ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
                ((TextView) v).setTextColor(Color.parseColor("#ffffff"));
                return v;
            }         ---->in this line very important so add this

            @Override
            public View getDropDownView(int position, View convertView,
                                        ViewGroup parent) {
                View view = super.getDropDownView(position, convertView, parent);
                TextView tv = (TextView) view;
                if (position == 0) {
                    // Set the hint text color gray
                    tv.setTextColor(Color.GRAY);
                } else {
                    tv.setTextColor(Color.BLACK);
                }
                return view;
            }
        };

        arrayAdapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        typeroute.setAdapter(arrayAdapter5);

यह सब आपके कोडिंग का आनंद है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.