Je crée une nouvelle spinner de manière dynamique, comment puis-je modifier la couleur de mon arrière-plan de la liste?
la couleur de fond actuelle est gris foncé:
Lorsque je change l'attribut d'arrière-plan du spinner au blanc, je reçois cette situation indésirable:
Je veux que cela soit transparent dans l'activité, et seulement lorsque j'ouvre la filante (appuyez dessus), je veux que le fond soit blanc.
Voici le code que je crée la fileuse avec:
Je crée l'adaptateur avec:
mAdapter = new ArrayAdapter<String>(getApplicationContext(),
R.layout.spinner, R.id.Language, lang);
LinearLayout layoutHolder =
(LinearLayout)findViewById(R.id.RegisterFormLayout);
Spinner spinner = new Spinner(getApplicationContext());
LayoutParams layParams= new
Spinner.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
spinner.setLayoutParams(layParams);
spinner.setAdapter(mAdapter);
spinner.setOnItemSelectedListener(new myOnItemSelectedListener());
if (lang != null)
spinner.setSelection(lang.intValue());
spinnerList.add(spinner);
layoutHolder.addView(spinner);
my Spinner.XML Layout est:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:id="@+id/SpinnerLayout">
<TextView
Android:id="@+id/Language"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textColor="#ffffff"
Android:background="#00ffffff"
Android:padding="5dp" />
</LinearLayout>
toute suggestion?
La solution pour cela consiste à ajouter ce code lors de la création du spinner de manière dynamique:
spinner.setPopupBackgroundResource(R.drawable.spinner);
et pour créer Spinner.xml sous dossier digue:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle">
<solid Android:color="#ffffff" />
</shape>
Cette solution nécessite un niveau d'API de 16 et plus.
le résultat:
Je pense que cette exigence ne peut pas être possible grâce à des changements thématiques. Étant donné que le constructeur de spinner attribue une valeur sur Popupbackground ATTER uniquement si vous écrivez dans la mise en page XML sinon elle utilisera la valeur de thème par défaut. comme ci-dessous
<Spinner
Android:id="@+id/spinner1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:popupBackground="@Android:color/holo_green_dark" />
// juste essayer de changer de fond de popup
Pour résoudre votre problème, essayez ceci.
Android:popupBackground="#00826b"
dans mon spinner.xml
utilisez ceci à linearlayout: Android:background="#ffffff"