Comment changer la taille du texte et la couleur du texte?

432

Dans mon application Android, j'utilise spinner, et j'ai chargé des données de la base de données SQLite dans le spinner, et cela fonctionne correctement. Voici le code pour cela.

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

Maintenant, je veux changer la couleur et la taille du texte des données de spinner. J'ai utilisé les lignes XML suivantes pour ma balise spinner sur mon fichier XML, mais cela ne fonctionne pas.

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

Comment puis-je changer la couleur et la taille du texte de mon spinner?

Dinesh Anuruddha
la source
vérifiez les sites suivants [StackoverFlow] [1] [stackoverflow] [2] [stackoverflow] [3] Je pense que c'est une question en double [1]: stackoverflow.com/questions/4880413/… [2]: stackoverflow.com/questions / 4989817 /… [3]: stackoverflow.com/questions/5836254/…
user1203673
essayez cet article stackoverflow.com/questions/6159113/…
Ajay
1
Pour textSize, le bon est d'utiliser SP ... android: textSize = "11sp"
Diego Venâncio

Réponses:

780

Créez un fichier XML personnalisé pour votre élément spinner.

spinner_item.xml:

Donnez votre couleur et taille personnalisées au texte de ce fichier.

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

Maintenant, utilisez ce fichier pour afficher vos éléments de spinner comme:

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

Vous n'avez pas besoin de définir la ressource déroulante. Il vous suffira spinner_item.xmlde montrer vos articles dans spinner.

Hiral Vadodaria
la source
2
Le texte @Hiral sera blanc uniquement pour l'élément actuellement sélectionné.
tesla
8
@SANTHOSH vous devez bien ajouter id à TextView, il suffit de l'ajouter android:id="@+id/customSpinnerItemTextView". Si vous l'aviez débogué, vous le sauriez.
vilpe89
3
@ vilpe89 pourriez-vous modifier votre code ci-dessus pour montrer ce que vous entendez par là? où va cet android: id? certainement pas dans la balise spinner, car il a son propre identifiant. mais cela n'a pas de sens de l'ajouter dans la balise textview que vous avez créée ci-dessus. comment puis-je indiquer que je veux utiliser cette balise directement à partir du XML? aussi, lors de la création du XML à partir d'Eclipse, je ne vois aucune option pour créer un fichier XML contenant uniquement un TextView, comment ça marche ???
Michael
29
Juste une petite note. Textsize devrait utiliser sp au lieu de dp / dip
ymerdrengene
18
cela ne peut-il pas être fait en utilisant uniquement le style? Je suis surpris de voir à quel point les petits trucs sont si difficiles à styliser dans Android .. c'est frustrant .. J'aurais aimé qu'ils aient un système de style comme CSS
ouaisman
183

Simple et net ...:

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
la source
19
C'est la meilleure solution pour moi, car je devais changer la couleur du texte dans le spinner, mais pas dans la liste qui apparaît. Je vous remercie.
peter.bartos
7
Pour moi, la couleur de l'article clignote, passant de la couleur d'origine à la couleur que j'ai choisie
Felipe Conde
@FelipeConde Avez-vous déjà trouvé une réponse? J'ai la même question. Ma question est ici: stackoverflow.com/questions/33908564/…
Rock Lee
@FelipieConde Pour vous, il faut d'abord la couleur de remontée, puis vous changez de couleur manuellement, donc ça a l'air si fatigué. Au début, cela prend <item name = "colorAccent"> @ color / color_primary </item> Ensuite, vous avez changé manuellement par programmation, vous ressentez donc le clignotement
Ashraf
2
cela a fonctionné pour moi, mais mon problème est que lorsque je reviens d'une application fragmentée, elle se bloque car elle obtient un pointeur nul sur le code ci-dessus
Akshay Shah
145

Si tous les filateurs peuvent avoir la même couleur de texte pour leurs éléments TextView, une autre approche consiste à utiliser un style personnalisé pour les éléments déroulants de la filière:

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

Et définissez votre couleur personnalisée dans res / values ​​/ colours.xml:

<color name="my_spinner_text_color">#808080</color>
Whypee
la source
2
Et comment appliquer cette solution au thème Appcompt? Je l'ai essayé en remplaçant le thème parent "@ style / Widget.AppCompat.DropDownItem.Spinner" et cela n'a pas fonctionné
GyRo
11
J'ajouterais également ajouter: <item name = "android: spinnerItemStyle"> @ style / mySpinnerItemStyle </item> Cela garantit que le texte réduit a la même couleur - au cas où ce serait le comportement souhaité.
boucle infinie du
4
ne fonctionne pas non plus pour moi, le style est complètement ignoré
diogo.abdalla
1
@Whypee veuillez modifier votre réponse en fonction des suggestions de boucle infinie, cela a fonctionné parfaitement pour moi
Chintan Desai
4
Pour le thème AppCompat, supprimez simplement android:comme ceci<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D
73

Voici un lien qui peut vous aider à changer la couleur du Spinner :

Cliquez ici

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

Vous devez créer votre propre fichier de mise en page avec une définition personnalisée pour l'élément spinner 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" />

Si vous souhaitez personnaliser les éléments de la liste déroulante, vous devrez créer un nouveau fichier de disposition. 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"/>

Et enfin un autre changement dans la déclaration du spinner:

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

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

C'est ça.

Niib Fouda
la source
2
Il s'agissait d'une réponse automatisée issue de l'examen des publications de nouveaux utilisateurs. Heureux de voir que vous avez modifié la réponse! :)
Marko
1
Il semble que android:textSize="20sp"dans le premier extrait de code est inutile: la taille du texte du contrôle est définie dans lespinner_item.xml
DenisGL
23

Si vous travaillez avec android.support.v7.widget.AppCompatSpinner, voici la solution testée la plus simple utilisant des styles:

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

Et le style:

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

Le seul inconvénient est l'androïde: backgroundTint définit la couleur de la flèche déroulante et de l'arrière-plan déroulant.

voytez
la source
3
vous utilisez style="@style/Widget.AppCompat.Spinner.Underlined"mais vous n'avez que style name="Spinner"...
user25
1
paddingStartnécessite l'API 17, backgroundTintnécessite l'API 21.
CoolMind
18

Pour éviter le retard, vous devez non seulement définir les propriétés du texte dans l' onItemSelectedécouteur, mais également dans la onCreateméthode de l'activité (mais c'est un peu délicat).

Plus précisément, vous devez le mettre onCreateaprès avoir configuré l'adaptateur:

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

Et puis mettez ceci dans onItemSelected:

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

Voici un exemple complet:

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

}  

Pour plus de détails, voir ma question .

Rock Lee
la source
15

Si vous souhaitez que la couleur du texte change uniquement dans l'élément sélectionné, cela peut être une solution de contournement possible. Cela a fonctionné pour moi et devrait également fonctionner pour vous.

spinner.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                ((TextView) spinner.getSelectedView()).setTextColor(Color.WHITE);
            }
        });
vishal-wadhwa
la source
6

Pour quelqu'un qui n'a besoin que d'un Stylemoyen AppCompat.

Résultat
entrez la description de l'image ici entrez la description de l'image ici

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
Et si vous souhaitez définir par android:entriesprogramme avec un style défini.
Essaye ça.

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

Comme dans le code, en utilisant même Contextla Spinnerest chose la plus importante.

spinner.getContext()
wonsuc
la source
5

Pour changer la couleur du texte de la double flèche:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}
Hanisha
la source
C'est le plus simple et cela a fonctionné pour moi, merci!
Mousa Alfhaily
j'aime aussi cette solution. c'est simple et ça marche bien.
korchix
4

Plutôt que de créer une mise en page personnalisée pour obtenir une petite taille et si vous souhaitez utiliser LAYOUT interne de petite taille d'Android pour le spinner, vous devez utiliser:

"android.R.layout.simple_gallery_item" au lieu de "android.R.layout.simple_spinner_item".

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

Cela peut réduire la taille de la disposition du spinner. C'est juste un truc simple.

Si vous souhaitez réduire la taille d'une liste déroulante, utilisez ceci:

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

La façon la plus simple de réutiliser / modifier les ressources android.R.layout est simplement d'aller à la définition. Dans Android Studio, faites Ctrl+ Bsur android.R.layout.simple_spinner_item.xml.

Il vous amènera au fichier de ressources. Copiez simplement le fichier de ressources et ajoutez une nouvelle mise en page dans votre dossier Package.R.layout et changez la couleur de texte de la vue de texte comme vous le souhaitez, puis appelez-la simplement dans l'adaptateur comme ceci:

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

Pour ceux qui veulent changer de DrowDownIconcouleur, vous pouvez utiliser comme ceci

spinner.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_ATOP);
AMAN SINGH
la source
pouvez-vous essayer<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AMAN SINGH
mettez cette ligne dans votre styleAppTheme
AMAN SINGH
C'est le code qui a fonctionné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); }
Edijae Crusar
4

Peut modifier la couleur du texte en remplaçant la méthode getView comme suit:

 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
la source
3

Le plus simple: fonctionne pour moi

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

spinnerText.setTextColor(Color.RED);
Waqar Ahmed Shujrah
la source
1
spinner.getChildAt (0) me revient nul: /
Karl Heinz Brehme Arredondo
2
Je pense que cette technique est pour 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"/>

utilisez simplement ceci:

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
la source
1

Une autre variante de la solution d'Achraf serait de s'assurer que vous tenez compte des tailles d'écran. Vous devrez obtenir le spinner dans onCreate et définir l'écouteur après avoir défini l'adaptateur:

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

Ensuite, vous pouvez commencer à modifier la taille du texte de la vue qui s'affiche avant de cliquer sur la double flèche:

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

    }
};

Tout ce que vous devez faire est de créer des dossiers spécifiques à la mise en page comme celui-ci:

values-sw360dp

values-sw600dp

values-sw800dp

puis ajoutez un fichier xml nommé "bool.xml" dans chacun de ces dossiers:

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

Nous devons d'abord créer le xmlfichier de ressources simple pour les textviewmêmes comme ci-dessous:

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

et enregistrez-le. après avoir défini votre liste d'adaptateurs.

Ishor Neupane
la source
1

vous pouvez avoir ce type d'adaptateur pour spinner, totalement personnalisé:

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

tandis que R.layout.spinner_text est:

<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" />
blackHawk
la source
1

Si vous voulez une méthode simple, pour ajouter des éléments à une liste déroulante, vous les ajoutez généralement au strings.xml. Voici un exemple sur la façon d'ajouter de la couleur à l'aide du fichier strings.xml:

SÉLECTIONNER LA GAMME D'ÂGE

<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
la source
astuce mignonne ... utile et rapide pour un spinner unique, la couleur doit être une chaîne de valeur de couleur brute non de xml
me_
0

J'ai fait cela comme suit: j'ai utilisé les méthodes getDropDownView () et getView ().

Utilisez getDropDownView()pour Spinner ouvert.

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

Et utiliser getView()pour Spinner fermé.

@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
la source
Il est correctement testé et a fonctionné dans l'application dans l'Appstore
Bhavinkumar Patel
0

Essayez cette méthode. Ça marche pour moi.

@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
la source
0

ajoutez simplement un nouveau style comme celui-ci:

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

et l'utiliser:

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

c'est tout profiter de votre codage ...

mahendren
la source