web-dev-qa-db-fra.com

Le texte sur le disque est blanc sur un fond blanc

Le texte sur mes fileuses est en blanc et je ne sais pas pourquoi.

enter image description here

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.

32
Robby Smet

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);
96
Le Hung

J'ai résolu ce problème en utilisant

getBaseContext()

au lieu de

getApplicationContext()
13
smukamuka

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"

2
DayDayHappy

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

1
zkminusck

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"/>
1
Febin Mathew

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

1
Shakeeb Ayaz

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);
0
Martin Nowosad