Wie ändere ich die Textgröße und die Textfarbe des Spinners?

432

In meiner Android-Anwendung verwende ich Spinner, und ich habe Daten aus der SQLite-Datenbank in den Spinner geladen, und es funktioniert ordnungsgemäß. Hier ist der Code dafür.

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);

Jetzt möchte ich die Textfarbe und die Textgröße der Spinnerdaten ändern. Ich habe folgende XML-Zeilen für mein Spinner-Tag in meiner XML-Datei verwendet, aber es funktioniert nicht.

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

Wie kann ich die Textfarbe und Textgröße meines Spinners ändern?

Dinesh Anuruddha
quelle
Überprüfen Sie die folgenden Websites [StackoverFlow] [1] [Stackoverflow] [2] [Stackoverflow] [3] Ich denke, dies ist eine doppelte Frage [1]: stackoverflow.com/questions/4880413/… [2]: stackoverflow.com/questions / 4989817 /… [3]: stackoverflow.com/questions/5836254/…
user1203673
Versuchen Sie diesen Beitrag stackoverflow.com/questions/6159113/…
Ajay
1
Für textSize ist es richtig, SP ... android zu verwenden: textSize = "11sp"
Diego Venâncio

Antworten:

780

Erstellen Sie eine benutzerdefinierte XML-Datei für Ihr Spinner-Element.

spinner_item.xml:

Geben Sie dem Text in dieser Datei Ihre benutzerdefinierte Farbe und Größe.

<?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"
    />

Verwenden Sie nun diese Datei, um Ihre Spinner-Gegenstände wie folgt anzuzeigen:

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

Sie müssen die Dropdown-Ressource nicht festlegen. Es dauert spinner_item.xmlnur, um Ihre Artikel in Spinner zu zeigen.

Hiral Vadodaria
quelle
2
@ Hiral-Text ist nur für das aktuell ausgewählte Element weiß.
Tesla
8
@SANTHOSH Nun, Sie müssen eine ID zu TextView hinzufügen, einfach dort anhängen android:id="@+id/customSpinnerItemTextView". Wenn Sie dies getestet hätten, würden Sie dies wissen.
vilpe89
3
@ vilpe89 Könnten Sie Ihren obigen Code ändern, um zu zeigen, was Sie damit meinen? Wohin geht dieses Android: ID? sicherlich nicht im Spinner-Tag, weil es eine eigene ID hat. Es ist jedoch nicht sinnvoll, es in das oben erstellte Textansicht-Tag einzufügen. Wie verweise ich darauf, dass ich dieses Tag direkt aus dem XML verwenden möchte? Außerdem sehe ich beim Erstellen des XML aus Eclipse keine Option zum Erstellen einer XML-Datei, die nur eine Textansicht enthält. Wie funktioniert das?
Michael
29
Nur eine kleine Notiz. Textsize sollte sp anstelle von dp / dip
ymerdrengene
18
Kann man das nicht nur mit Stil machen? Ich bin überrascht, wie schwierig es ist, kleine
Dinge
183

Einfach und knackig ...:

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) {

    }
};
Ashraf
quelle
19
Dies ist die beste Lösung für mich, da ich die Farbe des Textes im Drehfeld ändern musste, jedoch nicht in der angezeigten Liste. Vielen Dank.
Peter.bartos
7
Für mich blinkt die Farbe des Artikels und wechselt von der Originalfarbe zu der von mir gewählten Farbe
Felipe Conde
@FelipeConde Hast du jemals eine Antwort gefunden? Ich habe die gleiche Frage. Meine Frage ist hier: stackoverflow.com/questions/33908564/…
Rock Lee
@FelipieConde Für dich nimmt es zuerst die Aufstiegsfarbe, dann wechselt man manuell in eine andere Farbe, damit es so müde aussieht. Zuerst dauert es <item name = "colorAccent"> @ color / color_primary </ item> Dann haben Sie manuell per Programm geändert, so dass Sie das Blinken spüren
Ashraf
2
Dies funktionierte für mich, aber mein Problem ist, wenn ich von einer Fragment-App zurückkehre, die abstürzt, da sie einen Nullzeiger auf den obigen Code erhält
Akshay Shah
145

Wenn alle Spinner möglicherweise dieselbe Textfarbe für ihre TextView-Elemente haben, besteht ein anderer Ansatz darin, einen benutzerdefinierten Stil für Dropdown-Elemente für Spinner zu verwenden:

In 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>

Und definieren Sie Ihre benutzerdefinierte Farbe in res / values ​​/ color.xml:

<color name="my_spinner_text_color">#808080</color>
Whypee
quelle
2
Und wie kann man diese Lösung auf das Appcompt-Thema anwenden? Ich habe es versucht, indem ich das übergeordnete Thema "@ style / Widget.AppCompat.DropDownItem.Spinner" überschrieben habe, und es hat nicht
geklappt
11
Ich würde auch hinzufügen hinzufügen: <item name = "android: spinnerItemStyle"> @ style / mySpinnerItemStyle </ item> Dadurch wird sichergestellt, dass der reduzierte Text dieselbe Farbe hat - falls dies das gewünschte Verhalten ist.
Endlosschleife
4
funktioniert auch bei mir nicht, der Stil wird komplett ignoriert
diogo.abdalla
1
@Whypee bitte bearbeiten Sie Ihre Antwort gemäß den Vorschlägen der Endlosschleife, die für mich perfekt
funktionierte
4
Für AppCompat Thema entfernen Sie android:wie folgt<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D
73

Hier ist ein Link, der Ihnen helfen kann, die Farbe des Spinners zu ändern :

Klick hier

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

Sie müssen Ihre eigene Layoutdatei mit einer benutzerdefinierten Definition für das Spinner-Element spinner_item.xml erstellen :

<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" />

Wenn Sie die Dropdown-Listenelemente anpassen möchten, müssen Sie eine neue Layoutdatei erstellen. 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"/>

Und schließlich noch eine Änderung in der Erklärung des Spinners:

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

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

Das ist es.

Niib Fouda
quelle
2
Dies war eine automatisierte Antwort, die sich aus der Überprüfung der Beiträge neuer Benutzer ergab. Schön zu sehen, dass Sie die Antwort bearbeitet haben! :)
Marko
1
Es scheint, dass android:textSize="20sp"im ersten Code-Snippet nutzlos ist: Die Textgröße des Steuerelements ist in derspinner_item.xml
DenisGL
23

Wenn Sie mit android.support.v7.widget.AppCompatSpinner arbeiten, ist hier die einfachste getestete Lösung mit Stilen:

 <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>

Und der Stil:

<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>

Der einzige Nachteil ist das Android: backgroundTint legt die Farbe sowohl für den Dropdown-Pfeil als auch für den Dropdown-Hintergrund fest.

voytez
quelle
3
Sie verwenden, style="@style/Widget.AppCompat.Spinner.Underlined"aber Sie haben nur style name="Spinner"...
user25
1
paddingStarterfordert API 17, backgroundTinterfordert API 21.
CoolMind
18

Um Verzögerungen zu vermeiden, müssen Sie nicht nur die Texteigenschaften im onItemSelectedListener, sondern auch in der onCreateMethode der Aktivität festlegen (dies ist jedoch etwas schwierig).

Insbesondere müssen Sie dies onCreatenach dem Einstellen des Adapters eingeben:

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

Und dann setzen Sie dies in onItemSelected:

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

Hier ist ein vollständiges Beispiel:

@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)
        {  
        }  
    });  

}  

Weitere Einzelheiten finden Sie in meiner Frage .

Rock Lee
quelle
15

Wenn Sie möchten, dass sich die Textfarbe nur im ausgewählten Element ändert, kann dies eine mögliche Problemumgehung sein. Es hat bei mir funktioniert und sollte auch bei Ihnen funktionieren.

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

Für jemanden, der nur einen StyleWeg braucht AppCompat.

Ergebnis
Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

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>    

Plus
Und wenn Sie android:entriesprogrammgesteuert mit definiertem Stil einstellen möchten .
Versuche dies.

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);

Wie im Code ist es am wichtigsten , dasselbe Contextmit dem zu verwenden Spinner.

spinner.getContext()
Wonsuc
quelle
5

So ändern Sie die Farbe des Spinnertextes:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}
Hanisha
quelle
Das ist das einfachste und es hat bei mir funktioniert, danke!
Mousa Alfhaily
Ich mag diese Lösung auch. Es ist einfach und funktioniert gut.
Korchix
4

Anstatt ein benutzerdefiniertes Layout zu erstellen, um eine kleine Größe zu erhalten, und wenn Sie das interne kleine LAYOUT von Android für den Spinner verwenden möchten, sollten Sie Folgendes verwenden:

"android.R.layout.simple_gallery_item" anstelle von "android.R.layout.simple_spinner_item".

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

Dies kann die Größe des Spinner-Layouts verringern. Es ist nur ein einfacher Trick.

Wenn Sie die Größe einer Dropdown-Liste reduzieren möchten, verwenden Sie Folgendes:

madaptor.setDropDownViewResource(android.R.layout.simple_gallery_item);
Hemant Shori
quelle
4

Der einfachste Weg, die android.R.layout-Ressourcen wiederzuverwenden / zu ändern, ist einfach die Definition. Führen Sie in Android Studio Ctrl+ Bauf android.R.layout.simple_spinner_item.xml aus.

Sie gelangen zur Ressourcendatei. Kopieren Sie einfach die Ressourcendatei und fügen Sie ein neues Layout in Ihren Package.R.layout-Ordner ein. Ändern Sie die Textfarbe der Textansicht nach Ihren Wünschen und rufen Sie sie dann einfach im Adapter wie folgt auf:

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

Für diejenigen, die die DrowDownIconFarbe ändern möchten, können Sie dies verwenden

spinner.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_ATOP);
AMAN SINGH
quelle
können Sie versuchen<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AMAN SINGH
AppTheme
Setzen Sie
Dies ist der Code, der funktioniert hatDrawable 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); }
Edijae Crusar
4

Sie können die Textfarbe ändern, indem Sie die getView-Methode wie folgt überschreiben:

 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;
                }
    }
Madhur
quelle
3

Am einfachsten: Funktioniert für mich

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

spinnerText.setTextColor(Color.RED);
Waqar Ahmed Shujrah
quelle
1
spinner.getChildAt (0) gibt null an mich zurück: /
Karl Heinz Brehme Arredondo
2
Ich denke, diese Technik ist für API 19+.
Jose Manuel Abarca Rodríguez
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"/>

benutze einfach das:

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

Eine weitere Variante der Ashraf-Lösung besteht darin, sicherzustellen, dass Sie die Bildschirmgrößen berücksichtigen. Sie müssen den Spinner in onCreate installieren und den Listener einstellen, nachdem Sie den Adapter eingestellt haben:

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

Anschließend können Sie die Textgröße der angezeigten Ansicht ändern, bevor auf den Drehknopf geklickt wird:

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) {

    }
};

Sie müssen lediglich layoutspezifische Ordner wie folgt erstellen:

Werte-sw360dp

Werte-sw600dp

Werte-sw800dp

Fügen Sie dann eine XML-Datei mit dem Namen "bool.xml" in jeden dieser Ordner ein:

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

Zuerst müssen wir die einfache xmlRessourcendatei für textviewFolgendes erstellen :

<?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"
    />   

und speichern Sie es. nach dem Einstellen auf Ihrer Adapterliste.

Ishor Neupane
quelle
1

Sie können diese Art von Adapter für Spinner haben, vollständig angepasst:

 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;
        }

während R.layout.spinner_text ist:

<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" />
Schwarzer Falke
quelle
1

Wenn Sie eine einfache Methode wünschen, um Elemente zu einem Dropdown-Menü hinzuzufügen, fügen Sie sie normalerweise der Datei strings.xml hinzu. Hier ist ein Beispiel zum Hinzufügen von Farbe mithilfe der Datei strings.xml:

ALTERSBEREICH AUSWÄHLEN

<string-array name="age_array">

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

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

</string-array>
Jamie
quelle
süßer Trick ... nützlich und schnell für einen einmaligen Spinner, Farbe muss eine rohe Farbwertzeichenfolge sein, die nicht aus XML stammt
me_
0

Ich habe dies wie folgt gemacht. Ich habe die Methoden getDropDownView () und getView () verwendet.

Verwenden Sie getDropDownView()für geöffnete Spinner.

@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;
}

Und getView()für geschlossene Spinner verwenden.

@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;
}
Bhavinkumar Patel
quelle
Es ist ordnungsgemäß getesteter Code und arbeitete in der Anwendung im Appstore
Bhavinkumar Patel
0

Versuchen Sie diese Methode. Es funktioniert für mich.

@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();
}
Tushar Lathiya
quelle
0

füge einfach einen neuen Stil wie diesen hinzu:

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

und benutze es:

<Spinner
      android:id="@+id/spinnerCategories"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      style="@style/mySpinnerItemStyle"
      android:layout_margin="5dp" />
Elyas Nategh
quelle
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);

das ist alles viel Spaß beim Codieren ...

Mahendren
quelle