Alguém sabe quebrar o texto em TextView na plataforma Android. ou seja, se o texto em visualização de texto exceder o comprimento da tela, ele deve ser exibido na segunda linha.
Eu pesquisei e tentei o seguinte:
android:scrollHorizontally="false",
android:inputType="textMultiLine",
android:singleLine="false"
Mas nenhum funciona ..
Alguém pode sugerir como posso fazer isso.
android:inputType="textPersonName"
. Aparentemente, ele foi adicionado pela ferramenta de design do Android Studio. Remover esse atributo corrigiu o problema! Pode haver outros tipos de entrada que também impedem o empacotamento.Respostas:
Para mim, esse problema só ocorreu no Android <4.0
A combinação de parâmetros que usei foi:
android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"
A contagem de maxLines parecia ser a parte final aleatória que fez meu TextView embrulhar.
fonte
match_parent
, o que não é a mesma coisa que fazer a altura de TextView expandir para incluir as linhas extras.Layout de restrição
<TextView android:id="@+id/some_textview" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="@id/textview_above" app:layout_constraintRight_toLeftOf="@id/button_to_right"/>
android:maxLines="2"
para evitar a expansão vertical (2 é apenas um exemplo)android:ellipsize="end"
A largura de 0 dp permite restrições à esquerda / direita para determinar a largura do widget.
Definir as restrições esquerda / direita define a largura real de seu widget, dentro da qual o texto será quebrado.
Documentos de layout de restrição
fonte
Para o caso em que o
TextView
está dentro de umTableLayout
, a solução é definirandroid:shrinkColumns="1"
noTableLayout
. (Substitua1
pelo número da coluna em que está o TextView que você deseja agrupar. (Indexado em 0))AFAICT, nenhum outro atributo é necessário no
TextView
.Para outros casos, veja as outras respostas aqui.
FWIW, inicialmente comecei a trabalhar com
<TextView android:id="@+id/inventory_text" android:layout_width="fill_parent" android:layout_weight="1" android:width="0dp"
mas isso resultou em algum espaço vazio extra na parte inferior do diálogo em que estava tudo incluído.
fonte
Você deve usar 2 parâmetros:
android:ellipsize="none"
: o texto não é cortado na largura do textviewandroid:scrollHorizontally="false"
o texto quebra em quantas linhas forem necessáriasfonte
Tem três valores constantes
<android.support.v7.widget.AppCompatTextView android:id="@+id/textquestion" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:scrollHorizontally="false" android:text="Your Question Display Hear....Your Question Display Hear....Your Question Display Hear....Your Question Display Hear...." android:textColor="@android:color/black" android:textSize="20sp" android:textStyle="bold" app:breakStrategy="simple" />
yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);
Para mais referências, consulte esta BreakStrategy
fonte
Isso deve resolver o seu problema:
android:layout_weight="1"
.fonte
match_parent
. Não exatamente a mesma coisa que OP queria.layout_weight="1"
resolveu o problema para mim. No entanto, meu TableRow que contém o TextView, foilayout_height
definido com um valor específico. Talvez seja útil para alguémOK pessoal, a verdade está em algum lugar no meio, porque você tem que ver a questão do ponto de vista dos pais e dos filhos. A solução abaixo funciona SOMENTE quando o modo giratório =
dialog
independente da versão do Android (sem problemas .. testei em VD e DesireS com Android => 2.2):. Defina o modo giratório (pai) como:
android:spinnerMode="dialog"
Defina as propriedades do textview (visão personalizada filha) para:
android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"
Espero que isso funcione para você também.
fonte
Ao definir
android:maxEms
um determinado valor junto comandroid:layout_weight="1"
fará com que o TextView seja quebrado assim que atingir o comprimento determinado do ems.fonte
No Android Studio 2.2.3 na
inputType
propriedade, há uma propriedade chamadatextMultiLine
. Selecionar esta opção resolveu um problema semelhante para mim. Espero que ajude.fonte
Estava trabalhando em um TextView dentro de um layout dentro de um RecyclerView. Eu tinha texto ficar cortada, ex, para
Read this message
, eu vi:Read this
. Tentei configurarandroid:maxLines="2"
no TextView, mas nada mudou. No entanto,android:lines="2"
resultou naRead this
primeira linha emessage
na segunda.fonte
Eu tive o mesmo problema. Após a mudança, funcionou -
android:layout_width="wrap_content"
As reticências, maxLines ou layout_weight - todos não fizeram nenhuma diferença. Nota - A largura principal também é definida como wrap_content.
fonte
Tudo que você precisa fazer é definir a largura da visualização do texto .
android: layout_width = "60dp"
você pode alterar a largura de sua escolha. Basta digitar uma frase longa para verificar se funciona assim
android: text = "quero estar entre os engenheiros de software de classe mundial"
fonte
Experimente a abordagem de @ Guykun
android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"
Além disso, certifique-se de que a largura dos pais não esteja definida para envolver o conteúdo. Isso é o que eu estava perdendo.
fonte
Estou usando o Android 2.2 e meu textview irá automaticamente para a próxima linha se exceder a tela.
Se você quiser que o texto vá para a próxima linha antes do final da tela, basta adicionar (basta inserir seu próprio valor dp). Isso será útil se você tiver uma imagem à direita do texto.
android:layout_marginRight="52dp"
fonte
Estranho o suficiente - criei meu TextView em Code e ele foi encerrado - apesar de eu não ter configurado nada, exceto coisas padrão - mas veja por si mesmo:
LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); childParams.setMargins(5, 5, 5, 5); Label label = new Label(this); label.setText("This is a testing label This is a testing label This is a testing label This is a testing labelThis is a testing label This is a testing label"); label.setLayoutParams(childParams);
Como você pode ver na definição dos parâmetros, estou usando um LinearLayout. A classe Label simplesmente estende TextView - não fazendo nada ali, exceto definir o tamanho e a cor da fonte.
Ao executá-lo no emulador (API de nível 9), ele quebra automaticamente o texto em 3 linhas.
fonte
LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
. Provavelmente é isso que faz o embrulho que você considera ser "automagic"Basta definir
layout_with
um tamanho definido , quando o texto preencher a largura máxima, ele irá transbordar para a próxima linha causando um efeito de quebra automática.<TextView android:id="@+id/segmentText" android:layout_marginTop="10dp" android:layout_below="@+id/segmentHeader" android:text="You have the option to record in one go or segments(if you swap options you will loose your current recordings)" android:layout_width="300dp" android:layout_height="wrap_content"/>
fonte
O truque é com a largura textView, tente torná-la um número dedicado como:
<TextView android:layout_width="300dp" android:layout_height="wrap_content"/>
Já tentei muitas soluções sem nenhum resultado, tentei:
android:ellipsize="none" android:scrollHorizontally="false"
a única coisa que acionou a opção de contorno é a largura dedicada
fonte
Você precisa adicionar seu TextView em um ScrollView com algo assim:
<ScrollView android:id="@+id/SCROLL_VIEW" android:layout_height="150px" android:layout_width="fill_parent"> <TextView android:id="@+id/TEXT_VIEW" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" /> </ScrollView>
fonte