Ich möchte dem Dropdown-Menü eine benutzerdefinierte Höhe hinzufügen Spinner
, z. B. 30 dp, und ich möchte die Teiler der Dropdown-Liste von ausblenden Spinner
.
Bisher habe ich versucht, folgenden Stil zu implementieren 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>
und der Code meines Spinners lautet:
<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" />
Aber nichts scheint zu funktionieren.
Antworten:
Erstellen Sie einen benutzerdefinierten Adapter mit einem benutzerdefinierten Layout für Ihren Spinner.
R.layout.simple_spinner_item
R.layout.simple_spinner_dropdown_item
Fügen Sie in Stilen Ihre benutzerdefinierten Abmessungen und Höhen gemäß Ihren Anforderungen hinzu.
quelle
<item name="android:height">
zu<item name="android:layout_height">
android:id="@+android:id/text1"
in der Datei simple_spinner_dropdown_item.xml?Sie können ein vollständig benutzerdefiniertes Spinner-Design wie as erstellen
Schritt 1: Erstellen Sie im Zeichenordner background.xml für einen Rand des Spinners.
Schritt 2: Verwenden Sie für das Layout-Design des Spinners dieses Dropdown-Symbol oder ein beliebiges Bild drop.png
Endlich sieht es so aus wie unter dem Bild und es ist überall im runden Bereich anklickbar und es muss kein Klick-Lister für imageView geschrieben werden.
Schritt 3: Entfernen Sie für das Dropdown-Design die Linie aus der Dropdown-Listenansicht und ändern Sie die Hintergrundfarbe. Erstellen Sie einen benutzerdefinierten Adapter wie folgt
Erstellen Sie im Layoutordner R.layout.spinner_text.xml
Erstellen Sie im Layoutordner die Datei simple_spinner_dropdown.xml
In Stilen können Sie benutzerdefinierte Abmessungen und Höhen gemäß Ihren Anforderungen hinzufügen.
Endlich sieht es so aus
Je nach Anforderung können Sie die Hintergrundfarbe und den Text der Dropdown-Farbe ändern, indem Sie die Hintergrundfarbe oder die Textfarbe von simple_spinner_dropdown.xml ändern
quelle
Die eleganteste und flexibelste Lösung, die ich bisher gefunden habe, ist hier: http://android-er.blogspot.sg/2010/12/custom-arrayadapter-for-spinner-with.html
Befolgen Sie grundsätzlich die folgenden Schritte:
Erstellen Sie eine benutzerdefinierte Ansichtsklasse für Ihren Dropdown-Adapter. In dieser benutzerdefinierten Klasse müssen Sie Ihr benutzerdefiniertes Dropdown-Elementlayout in den Methoden getView () und getDropdownView () überschreiben und festlegen. Mein Code ist wie folgt:
Verwenden Sie in Ihrer Aktivität oder Ihrem Fragment den benutzerdefinierten Adapter für Ihre Spinner-Ansicht. Etwas wie das:
Dabei ist Optionen die Liste der Dropdown-Elementzeichenfolgen.
quelle
Versuche dies
Ich hatte viele Probleme, als ich eine andere Lösung ausprobierte. Nach viel Forschung und Entwicklung bekam ich jetzt eine Lösung
Erstellen Sie die Datei custom_spinner.xml im Layoutordner und fügen Sie diesen Code ein
in Ihrer Tätigkeit
Erstellen Sie eine neue Adapterklasse
quelle
Das hat bei mir funktioniert:
und in meinem Layoutordner habe ich erstellt
simple_spinner_item
:quelle
Ich habe ein kleines Demo-Projekt darauf aufgebaut, das Sie sich ansehen können. Link zum Projekt
quelle