J'ai un spinner android qui est peuplé par une liste de chaînes utilisant un ArrayAdapter et il fonctionne bien, mais en raison de la façon dont le spinner est affiché, je rencontre un problème de hauteur d'affichage avec les éléments de la liste. À première vue, il semblerait que ArrayAdapter puisse utiliser une seule disposition pour afficher les options qui mènent au problème que je rencontre. Lors de l'affichage de l'élément actuel dans le spinner (lorsque l'utilisateur ne sélectionne pas un nouvel élément de la liste), le spinner remplit le texte de sorte que le spinner soit d'une taille raisonnable pour un clic. Cependant, lorsque l'utilisateur appuie dessus et fait apparaître la liste pour sélectionner un nouvel élément, les éléments de la liste présentés sont très petits en hauteur. Si j'utilise une mise en page d'objet qui présente les éléments de la liste à une hauteur raisonnable, alors le fileur lui-même devient exorbitant en raison de son propre remplissage de l'élément de la liste. Des idées sur la façon dont je peux gérer la hauteur de ces deux modes d'affichage des articles afin qu'ils affichent effectivement avec la même valeur de hauteur au lieu de la hauteur de spinner étant plus grande que la hauteur d'affichage de l'article de liste?Comment puis-je gérer la hauteur des éléments de l'androïde?
Répondre
J'ai rencontré ce problème moi-même il y a quelque temps, et il est apparu que je dois utiliser différentes mises en page pour la liste déroulante et affichage
Je possède ce code:
adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cGroups,
new String[] {
"name", "_id"
}, new int[] {
android.R.id.text1
});
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Oui, la La réponse ci-dessus est correcte.
Il m'a fallu une éternité pour trouver ceci, parce que c'est faux dans les échantillons sdk pour 2.2 Android. Et j'ai eu du mal à accepter ça.
Voici un extrait de échantillons/android-12/Spinner/src/com/android/exemple/spinner/SpinnerActivity.java:
this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets, android.R.layout.simple_spinner_dropdown_item);
alors qu'il devrait avoir lieu et il android.R.layout.simple_spinner_item
simple_spinner_dropdown_item
ne devrait être utilisé pour les éléments de liste déroulante. Dans le cas contraire, la flèche de la spinner est étirée et elle dessine également un cercle de sélection déroulant.
votre message m'a aidé autant qu'il me laisse confus. La réponse donnée par Pentium10 utilise toujours la variante de liste déroulante dans l'appel setDropDownViewResource(), ce qui conduit à un remplissage complet des éléments. Juste essayer de modifier les propriétés dans un thème dans cette configuration - bonne chance avec les incohérences ... –
Pentium10 réponse est correcte, comme je l'ai dit, et je étais seulement heureux de cela. Mes remarques portent sur l'échantillon qui, je pense, devrait être mentionné aussi, parce que je n'ai pas repéré la faille au départ et c'est la raison pour laquelle je suis allé chercher une solution en premier lieu. –
Oh, j'ai compris. Merci pour la clarification. Et encore une fois, votre réponse m'a conduit sur la bonne voie, même si j'ai mal compris le contexte au début. –
C'est parfait. Je vous remercie! Pour être clair, la méthode setDropDownViewResource définit l'affichage de l'élément affiché lorsque l'utilisateur sélectionne dans une liste d'éléments. – rushinge