Как обернуть текст в textview в Android - PullRequest
75 голосов
/ 31 января 2011

Кто-нибудь знает, как обернуть текст в TextView на платформе Android. Т.е. если текст в textview превышает длину экрана, он должен отображаться во второй строке.

Я искал и пробовал следующее:

android:scrollHorizontally="false",
android:inputType="textMultiLine",
android:singleLine="false"

Но никто не работает ..

Может кто-нибудь подсказать, как мне это сделать.

Ответы [ 19 ]

1 голос
/ 09 августа 2018

Используйте app:breakStrategy="simple" в AppCompatTextView, он будет контролировать макет абзаца.

Он имеет три постоянных значения

  • сбалансированный
  • high_quality
  • simple

Проектирование в вашем TextView xml

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

Если текущий минимальный уровень API равен 23или больше, чем в кодировке

yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);

Для получения дополнительной информации см. BreakStrategy

Textview breakStrategy image

1 голос
/ 15 мая 2017

У меня была такая же проблема.Следующее изменение заставило его работать -

android:layout_width="wrap_content"

Многоточие, maxLines или layout_weight - все не имело значенияПримечание. Родительская ширина также устанавливается как wrap_content.

0 голосов
/ 04 июля 2016

Попробуйте подход @ Guykun и убедитесь, что родительская ширина не настроена для переноса содержимого.Это то, чего мне не хватало.

0 голосов
/ 06 мая 2011

Достаточно странно - я создал свой TextView в коде, и он обернут - несмотря на то, что я ничего не настраивал, кроме стандартных вещей - но убедитесь сами:

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);

Как видно из определения параметров, я использую LinearLayout. Класс Label просто расширяет TextView - ничего там не делает, кроме установки размера шрифта и цвета шрифта.

При запуске в эмуляторе (уровень API 9) текст автоматически переносится на 3 строки.

0 голосов
/ 23 января 2013

Я использую Android 2.2, и мой просмотр текста автоматически перейдет на следующую строку, если он превышает экран.

Если вы хотите, чтобы текст переходил на следующую строку до конца экрана, просто добавьтев (просто введите свое собственное значение дп).Это будет полезно, если у вас есть изображение справа от текста.

android:layout_marginRight="52dp"
0 голосов
/ 11 июля 2019

Просто установите layout_with на определенный размер, когда текст заполняет максимальную ширину, он перетекает на следующую строку, вызывая эффект переноса.

<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"/>
0 голосов
/ 21 ноября 2016

Это действительно очень просто.Просто напишите: + "\ n" везде, где вы хотите перенос слов

0 голосов
/ 12 июля 2019

Все, что вам нужно сделать, это установить ширину текстового обзора .

андроида: layout_width = "60dp"

вы можете изменить ширину по вашему выбору. Просто введите длинное предложение, чтобы проверить, работает ли оно так

android: text = "Я хочу быть среди разработчиков программного обеспечения мирового класса"

0 голосов
/ 31 января 2011

Вам нужно добавить свой TextView в ScrollView примерно так:

<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>
...