it-swarm.com.de

Mehr Platz zwischen Elementen in Android Spinner ohne benutzerdefinierten Stil hinzufügen?

Ich habe eine Android-Anwendung, die ich für eine konkrete Firma schreibe, die für das Ein- und Ausschalten verwendet wird. Ich habe einige Spinner verwendet, um Dinge wie Arbeitsseite und Job aus Dropdowns auszuwählen, aber ich mache mir Sorgen, dass die Gegenstände in den Spinnern zu nahe beieinander sind und es für die Mitarbeiter schwierig sein wird, den richtigen Gegenstand auszuwählen.

Ich möchte nur etwas mehr Platz zwischen den Elementen im Spinner einplanen, möchte aber nicht die Mühe machen, einen benutzerdefinierten Stil zu erstellen, da ich wirklich möchte, dass der Spinner genauso aussieht und sich genau wie die Standardeinstellung verhält Nur mit ein bisschen mehr Polsterung, und es ist eine Menge Arbeit, nur dafür einen eigenen Stil machen zu müssen.

Gibt es eine einfache Änderung, die ich vornehmen kann, z. B. eine Eigenschaft des Spinners festlegen? Ich habe versucht, den Spinner-Typ auf "Dialog" zu setzen, aber er zeigt nur die Liste mit dem gleichen Abstand, nur nicht an das Spinner-Steuerelement angehängt.

18
Jim

Ich glaube, Pragnanis Antwort ist richtig, aber so habe ich sie tatsächlich umgesetzt ...

In RES/layout wurde ein XML-Layout mit nur einer Textansicht erstellt (siehe unten). Diese Textansicht hat die benutzerdefinierte Größe/Füllung, die ich möchte.

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"/>

Bei der Aktivität, bei der ich meine Daten in den Spinner lade, übergebe ich beim Anlegen eines ArrayAdapter für meinen Spinner die benutzerdefinierte Textansicht als zweiten Parameter an den ArrayAdapter-Konstruktor.

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

Nun verwendet der Spinner für jedes Element in der Liste meine benutzerdefinierte Textansicht, die in spinner_row.xml definiert ist.

Das war für meine Bedürfnisse geradliniger als mit dem Stil zu spielen.

25
Jim

Wenn Sie einen zufriedenstellenden Abstand angeben möchten, verwenden Sie stattdessen alle diese XML-Dateien und alle Sie können einfach "simple_spinner_dropdown_item" im Spinneradapter verwenden.

Mögen 

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);

Es hat für mich funktioniert.

14
Ajit Sharma

Versuchen Sie Folgendes: _ Hier ändern Sie nicht den Spinner-Stil, sondern fügen die gewünschte zusätzliche Funktion für Ihre Spinner-Artikel hinzu, indem Sie den Stil für Spinner-Artikel festlegen.

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

Wenden Sie den Stil auf Ihren Spinner an, indem Sie den Stilattribut verwenden

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

Wenn Sie nicht wirklich einen bestimmten Abstand wünschen, würde ich mich für eines der eingebauten Layouts entscheiden.

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

Diese und mehr finden Sie in der R. Klasse 

0
Jeffrey