Le texte sur mes fileuses est en blanc et je ne sais pas pourquoi.
C'est mon xml, rien de spécial
<Spinner
Android:id="@+id/spinner_date"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1" />
Et mon code
dateSpinner = (Spinner) findViewById(R.id.spinner_date);
selectedDate = calendar.getTime();
List<String> list = new ArrayList<String>();
list.add(formatter.format(selectedDate));
dateAdapter = new ArrayAdapter<String>(mContext,
Android.R.layout.simple_spinner_item, list);
dateSpinner.setAdapter(dateAdapter);
Quelle pourrait être la raison pour laquelle mon texte est affiché en blanc?
EDIT: J'ai trouvé la raison, j'ai remplacé le paramètre mContext qui était défini dans mon onCreate.
mContext = getApplicationContext();
Maintenant j'utilise d
ateAdapter = new ArrayAdapter<String>(this,
Android.R.layout.simple_spinner_item, list);
et il fonctionne.
J'ai le même problème et j'ai trouvé la réponse. Vous n'utilisez pas le contexte d'application, mais utilisez simplement getActivity()
(si vous êtes dans un fragment) ou ceci (si vous êtes en activité), cela fonctionnera
dateAdapter = new ArrayAdapter<String>(**this**,
Android.R.layout.simple_spinner_item, list);
J'ai résolu ce problème en utilisant
getBaseContext()
au lieu de
getApplicationContext()
je le change de
new ArrayAdapter<String>(getApplicationContext(), Android.R.layout.simple_spinner_item, some_list);
tonew ArrayAdapter<String>(this, Android.R.layout.simple_spinner_item, list);
c'est corrigé, bien que je ne veuille pas utiliser "ceci"
Peut-être avez-vous un attribut Android:textColor="@Android:color/white"
blanc dans votre dossier simple_spinner_item.xml dans le dossier layout de votre projet.
Il vaut mieux utiliser une disposition d’élément spinner personnalisée avec un bon attribut Android:textColor="@Android:color/COLOR_YOU_WANT_TO_USE"
.
Vous pouvez facilement coiffer le Spinner. Utilisez ceci dans style.xml
:
<style name="SpinnerThemeLight" >
<item name="Android:colorBackground">@color/black</item>
<item name="Android:textColorPrimary">@color/black</item>
<item name="Android:textColorSecondary">@color/black</item>
<item name="Android:textColorTertiary">@color/black</item>
<item name="Android:textColorPrimaryDisableOnly">@color/black</item>
</style>
Dans le fichier xml
ci-dessus, j'ai simplement donné la couleur black
par souci de temps. Il suffit de jouer avec et de trier votre couleur préférée.
Définissez la Spinner
dans le activity.xml
comme suit:
<Android.support.v7.widget.AppCompatSpinner
Android:id="@+id/spinner"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:entries="@array/countrys"
Android:spinnerMode="dropdown"
Android:theme="@style/SpinnerThemeLight"/>
J'ai également eu le même problème c'était à cause de mon thème d'application. Que j'ai résolu en remplaçant le
Android.R.layout.simple_spinner_item
avec
Android.R.layout.simple_list_item_1
dans ma ArrayAdapter
. J'espère que cela peut résoudre votre problème
Je suppose que vous avez créé votre propre TextView pour votre Spinner, par exemple.
<TextView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textSize="14sp"
Android:textColor="@color/white"
Android:padding="5dip"
/>
et collé à votre adaptateur via un appel comme ça
String[] spinnerItems = getResources().getStringArray(R.array.my_array);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.spinner_text, spinnerItems);
Cela devrait avoir pour résultat que le texte de sélection de votre spinner, y compris ses éléments dans la liste déroulante, soit peint en blanc. Désormais, l'arrière-plan de votre vue déroulante sera influencé par le thème de votre application, qui, dans la plupart des cas, entraînera le rendu de votre texte blanc sur un fond blanc. Pour éviter cela, Android vous permet de définir une ressource pour votre vue déroulante spinner. Vous pouvez définir votre propre vue ou simplement utiliser la vue déroulante par défaut, qui remplacera votre affichage de texte personnalisé dans le menu déroulant lors de l'appel.
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
Le code complet pourrait ressembler à ceci
this.spinner = findViewById(R.id.spinnerView);
String[] spinnerItems = getResources().getStringArray(R.array.my_array);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.spinner_text, spinnerItems);
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
this.spinner.setAdapter(adapter);