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\n
s em qualquer lugar no texto.
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));