O Spinner não quebra o texto - isso é um bug do Android?

Se o texto de umSpinner item é muito longo para caber em uma única linha, o texto não é empacotado, mas cortado. Isto ésó o caso deNível de API> = 11. Aqui estão as imagens do Android4.2.2 (à esquerda) que mostra o comportamento errado e o Android2.3.3 (à direita), onde parece como esperado.

android:singleLine="false" simplesmente é ignorado aqui. Então, como todas as outras tentativas, comoandroid:lines, android:minLines, etc.TextView de alguma forma parece ser muito mais largo que a largura da janela.

Eu vi outras pessoas tendo o mesmo problema, mas ninguém conseguiu encontrar uma solução. Então, isso é um bug do sistema? Eu não acho que essa inconsistência entre as versões do sistema operacional pode ser intencional.

Observe:

Houve algumas respostas sugerindo soluções relativamente simples.

Escrevendo um costumeAdapter e substituindogetView() assim comogetDropDownView(). Essa não é a solução aqui, porque, nesse ponto, ainda existe o problema original: como o layout precisa parecer para lidar com a quebra de linha adequada?

Envolvendo oTextView da exibição suspensa em um paiViewGroup. Não funciona comandroid:layout_width="match_parent" porque a largura do pai parece estranhamente ilimitada.

Dando a exibição suspensa uma largura fixa. Isto não é adequado com as diferentes largurasSpinner podem ter.

E, claro, nenhuma solução é inserir manualmente\ns em qualquer lugar no texto.

Reproduza com o seguinte código:

ATUALIZAR: Eu também fiz o upload deste como um projeto de amostraGitHub: Baixar

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

ConjuntoAdapter:

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

questionAnswers(14)

yourAnswerToTheQuestion