web-dev-qa-db-fra.com

Ajouter plus d'espace entre les éléments dans Android Spinner sans style personnalisé?

J'ai une application Android que j'écris pour une société de béton qui sera utilisée pour la synchronisation. J'ai utilisé des fileuses pour sélectionner des éléments tels que Chantier et Travail dans des menus déroulants, mais je crains que les éléments des fileuses ne soient trop rapprochés et que les employés aient des difficultés à sélectionner le bon élément.

J'aimerais laisser un peu plus d'espace entre les éléments de la roulette, mais je ne veux pas passer par tous les efforts nécessaires pour créer un style personnalisé, car je veux vraiment que la roulette ressemble et se comporte exactement comme le défaut, sauf juste avoir un peu plus de rembourrage, et c'est beaucoup de travail de devoir créer un style personnalisé juste pour ça.

Y a-t-il un simple changement que je peux faire, comme définir certaines propriétés de la roulette? J'ai essayé de définir le type de compteur sur Dialog, mais il ne montre que la liste avec le même espacement, mais pas attaché au contrôle de rotation.

18
Jim

Je pense que la réponse de Pragnani est correcte, mais c'est comme ça que je l'ai mise en œuvre ...

-Dans RES/layout, créé une mise en page XML avec juste une vue de texte, comme illustré ci-dessous. Cette vue de texte a la taille/remplissage personnalisé que je veux.

spinner_row.xml

  <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/cust_view"
        Android:minWidth="246dp"
        Android:layout_width="match_parent"
        Android:layout_height="48dp"
        Android:gravity="left|center_vertical"
        Android:textColor="@Android:color/black"    
        Android:textSize="20sp"
        Android:paddingLeft="4dp"
        Android:textIsSelectable="false"/>

Ensuite, dans l'activité où je charge mes données dans le disque, lorsque je crée un ArrayAdapter pour mon disque, je passe la vue texte personnalisée en tant que second paramètre au constructeur ArrayAdapter.

Spinner spinClockInWorkSite = (Spinner)findViewById(R.id.spinClockInWorkSite);
ArrayAdapter spinClockInWorkSiteAdapter = new ArrayAdapter(this, R.layout.spinner_row, this.workSiteList);
spinClockInWorkSite.setAdapter(spinClockInWorkSiteAdapter);

Alors maintenant, spinner utilise ma vue texte personnalisée définie dans spinner_row.xml pour chaque élément de la liste.

Cela a fini par être plus simple pour mes besoins que de jouer avec le style.

25
Jim

Si vous souhaitez donner un espacement satisfaisant, utilisez plutôt "simple_spinner_dropdown_item" dans l'adaptateur spinner.

Comme 

String [] dataList = new String[]{"Select","A","B","C","D","E"};
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                Android.R.layout.simple_spinner_dropdown_item, dataList);
        spinner.setAdapter(dataAdapter);

Cela a fonctionné pour moi.

14
Ajit Sharma

Essayez ceci, .__ Ici, vous ne modifiez pas le style de roulette, mais ajoutez la fonctionnalité supplémentaire que vous souhaitez pour vos éléments de roulette en définissant le style pour Élément de roulette.

<style name="spinnerStyle"  parent="@Android:style/Widget.TextView.SpinnerItem">
       <item name="Android:padding">5sp</item>
    </style>

Et appliquez du style à votre spinner en utilisant l'attribut style

 style="@style/spinnerStyle"
5
Pragnani
adapter=new ArrayAdapter<String>(this,Android.R.layout.simple_dropdown_item_1line, 
ArrayList);
1
Govind Maheshwari

À moins que vous ne souhaitiez un espacement très spécifique, je choisirais l'une des dispositions intégrées.

simple_spinner_item = No line space.
simple_spinner_dropdown_item = 1 line space.
simple_dropdown_item_1line = 1.5 line space.

Ceux-ci et plus se trouvent dans R.class 

0
Jeffrey