Spinner не переносит текст - это ошибка Android?

Если текстSpinner элемент слишком длинный, чтобы поместиться в одну строку, текст не оборачивается, а обрезается. Этотолько случай дляУровень API> = 11, Вот скриншоты Android4.2.2 (слева), который показывает неправильное поведение и Android2.3.3 (справа), где это выглядит, как ожидалось.

android:singleLine="false" просто игнорируется здесь. Так как все другие попытки, какandroid:lines, android:minLinesи т. д.TextView как-то кажется намного шире, чем ширина окна.

Я видел других людей, имеющих такую же проблему, но никто не мог найти решение. Итак, это системная ошибка? Я не думаю, что это несоответствие между версиями ОС может быть намеренным.

Пожалуйста, обратите внимание:

Были некоторые ответы, предлагающие относительно простые решения.

Написание кастомаAdapter и переопределениеgetView() также как иgetDropDownView(), Здесь это не решение, потому что на данный момент все еще существует оригинальная проблема: как должен выглядеть макет для правильного переноса строк?

УпаковкаTextView раскрывающегося представления в родительскомViewGroup, Не работает сandroid:layout_width="match_parent" потому что ширина родителя, как ни странно, кажется неограниченной.

Придание выпадающему виду фиксированной ширины. Это не подходит с различной ширинойSpinner может иметь.

И, конечно же, нет решения вручную вставить\nгде-нибудь в тексте.

Воспроизведите с помощью следующего кода:

ОБНОВИТЬ: Я также загрузил это как пример проекта наGitHub: Скачать

/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" />

УстановленAdapter:

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

Ответы на вопрос(14)

Ваш ответ на вопрос