Spinner nicht umbrechen von text — ist das ein Android-bug?

Wenn der text einer Spinner Artikel ist zu lang und passt nicht in eine Zeile, der text wird nicht umgebrochen, sondern abgeschnitten. Dies ist nur Fall für API-Ebene >= 11. Hier sind screenshots der Android - 4.2.2 (Links) zeigt das falsche Verhalten und Android 2.3.3 (rechts), wo es aussieht wie erwartet.

Spinner nicht umbrechen von text — ist das ein Android-bug?
Spinner nicht umbrechen von text — ist das ein Android-bug?

android:singleLine="false" wird einfach ignoriert hier. So wie alle anderen versucht, wie android:linesandroid:minLines usw. Die TextView irgendwie scheint zu sein, viel breiter als die Fensterbreite.

Ich sah, dass andere Leute das gleiche problem, aber keiner konnte eine Lösung finden. So, ist das ein system Fehler? Ich glaube nicht, dass diese Inkonsistenz zwischen den OS-Versionen gemeint sein kann.


Bitte beachten Sie:

Gab es einige Antworten, die darauf hindeutet, relativ einfache Lösungen.

  • Schreiben einer benutzerdefinierten Adapter und überschreiben getView() sowie getDropDownView(). Dies ist nicht die Lösung hier, weil an dieser Stelle, es ist immer noch das ursprüngliche problem: Wie wird das layout Aussehen zu handhaben, die richtige Zeile umbrechen?

  • Einwickeln der TextView von der drop-down-Sicht in eine übergeordnete ViewGroup. Funktioniert nicht mit android:layout_width="match_parent" da die Breite des übergeordneten seltsam zu sein scheint unbegrenzt.

  • Angabe der drop-down-anzeigen eine Feste Breite. Dies ist nicht geeignet, mit den verschiedenen breiten der Spinner haben kann.

  • - Und natürlich keine Lösung ist manuell einfügen \ns irgendwo in den text.


Reproduzieren mit dem folgenden code:

UPDATE: ich auch hochgeladen, dies als ein Beispiel-Projekt auf GitHub: Download

/res/values/arrays.xml:

<string-array name="items">
    <item>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.</item>
    <item>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est.</item>
</string-array>

/res/layout/spinner_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="none"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:singleLine="false" />

Set Adapter:

spinner.setAdapter(ArrayAdapter.createFromResource(this,
            R.array.items,
            R.layout.spinner_item));

InformationsquelleAutor der Frage Matthias Robbers | 2013-01-03

Schreibe einen Kommentar