Je veux ajouter une hauteur personnalisée à la liste déroulante de Spinner
, disons 30dp, et je veux masquer les diviseurs de la liste déroulante de Spinner
.
Jusqu'à présent, j'ai essayé d'implémenter le style suivant au Spinner
:
<style name="spinner_style">
<item name="android:paddingLeft">0dp</item>
<item name="android:dropDownWidth">533dp</item>
<item name="android:showDividers">none</item>
<item name="android:dividerHeight">0dp</item>
<item name="android:popupBackground">@drawable/new_bg</item>
<item name="android:dropDownHeight">70dp</item>
<item name="android:scrollbarAlwaysDrawVerticalTrack">true</item>
<item name="android:dropDownSelector">@android:color/white</item>
</style>
et le code de mon spinner est:
<Spinner
android:id="@+id/pioedittxt5"
android:layout_width="543dp"
android:layout_height="63dp"
android:layout_toRightOf="@+id/piotxt5"
android:background="@drawable/spinner"
style="@style/spinner_style"
android:dropDownVerticalOffset="-53dp"
android:spinnerMode="dropdown"
android:drawSelectorOnTop="true"
android:entries="@array/travelreasons"
android:prompt="@string/prompt" />
Mais rien ne semble fonctionner.
Réponses:
Créez un adaptateur personnalisé avec une disposition personnalisée pour votre spinner.
R.layout.simple_spinner_item
R.layout.simple_spinner_dropdown_item
Dans les styles, ajoutez vos dimensions et hauteur personnalisées selon vos besoins.
la source
<item name="android:height">
pour<item name="android:layout_height">
android:id="@+android:id/text1"
du fichier simple_spinner_dropdown_item.xml?Vous pouvez créer un design de spinner entièrement personnalisé comme
Étape 1: Dans le dossier drawable, créez background.xml pour une bordure du spinner.
Étape 2: pour la conception de la mise en page du spinner, utilisez cette icône déroulante ou n'importe quelle image drop.png
Enfin ressemble à l'image ci-dessous et il est partout cliquable dans la zone ronde et pas besoin d'écrire cliquez sur Lister pour imageView.
Étape 3: Pour la conception déroulante, supprimez la ligne de la liste déroulante et modifiez la couleur d'arrière-plan, créez un adaptateur personnalisé comme
Dans le dossier layout, créez R.layout.spinner_text.xml
Dans le dossier layout, créez simple_spinner_dropdown.xml
Dans les styles, vous pouvez ajouter des dimensions et une hauteur personnalisées selon vos besoins.
Ressemble enfin à
Selon l'exigence, vous pouvez changer la couleur d'arrière-plan et le texte de la couleur déroulante en changeant la couleur d'arrière-plan ou la couleur du texte de simple_spinner_dropdown.xml
la source
La solution la plus élégante et la plus flexible que j'ai trouvée jusqu'à présent est ici: http://android-er.blogspot.sg/2010/12/custom-arrayadapter-for-spinner-with.html
En gros, suivez ces étapes:
Créez une classe de vue personnalisée, pour votre adaptateur de liste déroulante. Dans cette classe personnalisée, vous devez remplacer et définir votre disposition d'élément de liste déroulante personnalisée dans les méthodes getView () et getDropdownView (). Mon code est comme ci-dessous:
Dans votre activité ou fragment, utilisez l'adaptateur personnalisé pour votre vue double. Quelque chose comme ça:
où options est la liste des chaînes d'élément de liste déroulante.
la source
Essaye ça
J'étais confronté à de nombreux problèmes lorsque j'essayais une autre solution ... Après beaucoup de R&D, j'ai maintenant une solution
créez custom_spinner.xml dans le dossier layout et collez ce code
dans votre activité
créer une nouvelle classe d'adaptateur
la source
Cela a fonctionné pour moi:
et dans mon dossier de mise en page, j'ai créé
simple_spinner_item
:la source
J'ai construit un petit projet de démonstration à ce sujet, vous pouvez y jeter un œil Lien vers le projet
la source