Ich nehme an, dass Sie versuchen, den "äußeren" Hintergrund eines Spinner Popups zu ändern, nicht den Hintergrund von Spinner "Pupup Items". Ich nehme auch an, dass Sie unter Popup einen Spinner-Dialog-Modus verstehen, bei dem im Gegensatz zum neuen Dropdown-Modus ein schwebendes Dialogfenster über Ihrer Aktivität angezeigt wird.
Für einen sauberen, nachhaltigen Ansatz, der sich über mehrere Android-Plattformen hinweg gut auswirkt und den Bedarf an Redundanz in der App verringert, ist es meiner Meinung nach wichtig zu verstehen, was uns die offiziellen Dokumente nicht sagen. Also folge mir auf eine kurze Reise.
Das Schwierige an Spinner ist, dass ein Adapter verwendet wird, um sie mit Daten zu verbinden. Während es relativ einfach ist, die Haken zum Ändern des Aussehens von android.R.layout.simple_spinner_item und seinen Freunden zu identifizieren, bestimmen diese nur den Stil des aktuell angezeigten Gegenstands des Spinner sowie jedes einzelne Popup-Gegenstand. Aber es ist der Adapter , der für das Erstellen der ListView und anderer Widgets zuständig ist, die diese ListView umrahmen.
Diese Komplexität ist wahrscheinlich der Grund, warum Android einige Attribute eingeführt hat, die "für" den Spinner direkt angegeben werden können, obwohl sie dann auf die Kinder des Spnner angewendet werden, wie Android: PopupBackground . Dies ist nicht unbedingt ein sauberer Ansatz, sondern ein begrenzter Satz von Komfortfunktionen. Bezüglich popupBackground, btw, wurde dies in API Level 1 eingeführt, aber Spinner respektieren es nur in spinnerMode = dropdown , was in API Level 11 eingeführt wurde. Das ist der Grund, warum du nie benachrichtigt werden wirst nutze es falsch.
Wenn Sie wissen, dass der Adapter eine ListView erstellt, ist es keine schlechte Idee, die ListView-Darstellung in einem Thema zu ändern. Es gibt also einen einzigen Platz für die Designänderung und die Styling einfach, so:
%Vor%Leider gibt es mehr Arbeit. Da Android: Prompt verwendet werden kann, um eine Überschrift für das Popup zu erstellen, besteht das Popup wirklich aus mehr als nur der ListView.
Android verwendet einen AlertDialog
Nun, da die AlertDialogs formatiert sind, müssen wir noch die Tatsache berücksichtigen, dass neuere Android-Versionen keine AlertDialogs mehr für Spinner-Dialoge verwenden. Das tut nicht weh, denn für diese sollte der AlertDialog-Stil sowieso beibehalten werden. Es bedeutet nur, dass wir das neue Popup ebenfalls stylen müssen.
Erstellen Sie zu diesem Zweck versionsspezifische XML-Themendateien, um die zusätzlichen Stile in Ihr benutzerdefiniertes Design zu übernehmen, und stellen Sie versionsspezifische XML-Formatdateien bereit.
Lust, es selbst zu versuchen, hier anzufangen?
Tags und Links android android-widget android-spinner