Spinner mit multi-line-Elemente überlappt ausgewählte Element anzeigen auf Froyo
Ich versuche zu schaffen, die Spinner, die gleich Aussehen auf allen Versionen von Android zurück zu Froyo. Zu diesem Zweck, ich bin mit HoloEverywhere. Einige der spinner Element text mehr als eine Zeile, und ich möchte es zu wickeln.
Verwendung der Standard-layout, android.R.layout.simple_spinner_dropdown_item
oder HoloEverywhere s drop-in-Ersatz für ihn, ellipsizes den text statt umwickeln.
Unter der HoloEverywhere layout als Ausgangspunkt für ein eigenes layout mit singleLine
eingestellt false
, ellipsize
eingestellt none
, und layout_height
eingestellt wrap_content
hilft nicht, der text ist immer noch abgeschnitten.
Ich kann bekommen, den text zu wickeln, richtig in der dropdown-durch die Verpackung des TextView
im LinearLayout
, aber auf Froyo Geräte, vermasselt die Anzeige der ausgewählt Artikel:
Diese Methode funktioniert auf neueren Geräten. Das dropdown-Element-layouts sind problemlos auf allen Geräten. Aber Froyo nicht diese komischen text überlappende wenn ich ein benutzerdefiniertes dropdown-Element layout. Jede Auswahl wird einfach gestapelt auf der Oberseite des letzten.
Diese Frage:
Spinner nicht umbrechen von text -- ist das ein Android-bug? über Textumbruch in Spinner schlägt vor, dass der einzige Weg, es zu tun, ist neu das styling von Grund auf, ohne zu Erben, aber das klingt verrückt und anfällig für Probleme.
my_simple_list_item_1.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/android:text1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:ellipsize="marquee"
android:layout_gravity="center_vertical"
android:singleLine="false"/>
</LinearLayout>
Java:
import org.holoeverywhere.widget.Spinner;
spinner1.setAdapter(ArrayAdapter.createFromResource(this,
R.array.array_of_strings, R.layout.my_simple_list_item_1));
- Beachten Sie, dass es gibt zwei style-Dateien beteiligt, eine für die dropdown-Liste, die Elemente, und eine für das ausgewählte Listenelement (das klingt wie die, die überlappung). Sind Sie explizit festlegen des ausgewählten Stil?
- Auch haben Sie versucht, nur geben Sie dem layout einen hintergrund, so dass selbst wenn es überschneidungen, Sie werden nicht in der Lage, um zu sehen, was darunter ist?
- Hey es bladiblah, vielen Dank für die Beantwortung. Ich glaube nicht, ich bin Einstellung, die der ausgewählten Formatvorlage explizit. Allerdings nur um zu überprüfen, was geschehen war, habe ich ihm eine hintergrund. Ich habe eigentlich gehofft, das würde funktionieren, aber leider war es das stapeln der falsche Weg. Wenn ich ein hintergrund auf die textview, ich würde immer nur sehen, das erste auswählbare Element im spinner(oder das erste Element im array). Es scheint, als war es stapeln, das neue Material wurde unter dem alten Zeug, damit das hinzufügen eines hintergrund-nur lassen Sie mich sehen, die erste Auswahl.
- Gibt es eine Möglichkeit, wo ich explizit gesetzt, wird die ausgewählte Liste posten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe eine Lösung gefunden. Der text war Verpackung, wie die Spinner die anfängliche Anzeige konnte sich nur mit textviews, und ich hatte eine andere Lösung gefunden und empfehlen die Verwendung eines linearen layout. Diese aus der dropdown-Liste der spinner korrekt Aussehen. Wie es sich herausstellt-Adapter haben eine Ressource namens setDropDownViewResource (), die es erlaubt, verschiedene anzeigen für die dropdown-als das, was angezeigt wird, in der spinner ' s selection.
in diesem Beispiel die simple_list_item ist die Standardeinstellung geliefert, die von android und mY_simple_list_item ist
Nun der text umgebrochen innerhalb der dropdown-Blick auf den spinner UND die Spinner die angezeigte Auswahl.
Klingt wie Sie schieben bergauf. Meine Vermutung ist, Ihr Kunde wird nie in der Lage sein zu 100% zuverlässige und konsistente Ergebnisse mit umbrochenen text.
Finden Sie unter:
Spinner nicht umbrechen von text -- ist das ein Android-bug?