-
Paramétrer un Spinner
Bonjour à tous !
Je suis en phase finale de programmation d'une application et je bloque sur un détail.
J'ai créé une activité qui contient plusieurs spinners. Ces derniers sont déclarés dans le layout en xml. La liste à afficher est déclarée aussi dans le layout avec "android:entries" qui pointe vers un "Array" dans mon ficher "strings.xml".
Ce que je ne comprends pas c'est que les attributs "android:textSize" et "android:layout_width" n'ont aucune action sur le spinner. Le texte ne change pas de taille et la largeur s'ajuste sur la taille du texte au lieu de prendre la valeur que je veux lui définir.
Du coup, j'aurais voulu savoir comment paramétrer un spinner en xml ?
J'ai vu qu'on peut aussi paramétrer la liste déroulante, peut-on le faire en xml et comment ?
Merci d'avance pour votre aide.
-
C'est parce que l'apparence de chaque item du spinner est défini par défaut dans android.R.layout.simple_spinner_item. Cela ne se règle pas au niveau du layout qui contient le spinner donc. Pour appliquer ton propre layout custom au spinner, pas le choix, il faut passer par un Adapter (100% programmation).
A noter que l'apparence d'un spinner repose également sur un autre layout : le dropDown layout (android.R.layout.simple_spinner_dropdown_item par défaut), qui définit l'esthétique lorsque l'on déroule le menu
-
Ok merci.
Mais du coup ça devient compliqué si je veux que mon spinner et son contenu changent de dimensions en fonction des dimensions de l'écran et de son orientation ?!
-
En fait nul besoin de programmation.
Il faut faire un layout indépendant pour les items (par défaut un simple TextView avec comme identifiant: android:id/text1 je crois). Que tu adaptes à ta sauce.
Ensuite dire au Spinner d'utiliser ce layout pour l'item affiché (itemLayout), et le même (ou un autre) pour les items affichés quand il est ouvert (dropDownLayout).
Je ne vois pas trop pourquoi le contenu changerait de dimension ceci-dit... mais bon pourquoi pas.
Si c'est une histoire de textSize, il vaut mieux passer par une "valeur" qui dépendra de la taille de l'écran etc... plutôt que par un layout par taille d'écran.
-
Merci pour ces infos, je vais creuser ça et je vous dis...