Ich versuche, Spinner, die auf allen Versionen von Android die gleichen aussehen zurück zu Froyo. Zu diesem Zweck verwende ich HoloEverywhere. Einige der Spinner Items sind mehr als eine Zeile, und ich möchte, dass sie umbrochen wird.Spinner mit mehrzeiligen Objekten überlappt ausgewählte Artikel auf Froyo
Mithilfe des Standardlayouts android.R.layout.simple_spinner_dropdown_item
oder HoloEverywhere's drop-in replacement for it wird der Text in Ellipse gebracht, anstatt ihn zu umbrechen.
das Layout des HoloEverywhere Nimmt man als Ausgangspunkt für einen benutzerdefinierten Layout mit singleLine
Set false
, ellipsize
Set none
und layout_height
Satz wrap_content
nicht hilft, wird der Text immer noch abgeschnitten.
ich kann den Text bekommt richtig in der Dropdown-Liste zu wickeln, indem die TextView
in einem LinearLayout
Einwickeln, sondern auf Froyo Geräte diese vermasselt die Anzeige der ausgewählt Artikel auf:
Diese Methode funktioniert gut auf neueren Geräten. Die Dropdown-Element-Layouts sind auf allen Geräten in Ordnung. Aber Froyo macht diesen seltsamen Text überlappend, wenn ich ein benutzerdefiniertes Dropdown-Element-Layout verwende. Jede Auswahl wird nur auf der letzten gestapelt.
Diese Frage: Spinner does not wrap text -- is this an Android bug? über Textumbruch in Spinner legt nahe, dass nur so, ohne es neu zu erstellen das Styling von Grunde auf tun vererben, 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 zwei Stildateien beteiligt sind, eine für die Dropdown-Listenelemente und eine für das ausgewählte Listenelement (das wie das überlappende Element klingt). Setzen Sie den ausgewählten Stil explizit? – blahdiblah
Haben Sie auch versucht, dem Layout einen Hintergrund zu geben, sodass Sie selbst bei Überlappung nicht sehen können, was darunter liegt? – blahdiblah
Hey da, bladiblah, danke für die Antwort. Ich glaube nicht, dass ich den ausgewählten Stil explizit festlegen werde. Aber um zu sehen, was passiert ist, habe ich einen Hintergrund gegeben. Ich hoffte wirklich, dass das funktionieren würde, aber leider stapelte es sich in die falsche Richtung. Wenn ich einen Hintergrund auf die Textansicht stelle, würde ich immer nur das erste auswählbare Element im Spinner (oder das erste Element im Array) sehen. Es schien, als wenn das neue Material unter die alten Sachen stapelte, also fügte ich nur einen Hintergrund hinzu, um diese erste Auswahl zu sehen. –