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:
Spinner mit multi-line-Elemente überlappt ausgewählte Element anzeigen auf Froyo

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?
Schreibe einen Kommentar