Подтвердить что ты не робот

Как обернуть текст в textview в Android

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

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

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

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

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

4b9b3361

Ответ 1

Для меня эта проблема произошла только в Android < 4.0

Сочетание параметров, которые я использовал, было:

android:layout_weight="1"
android:ellipsize="none"
android:maxLines="100"
android:scrollHorizontally="false"

Счет maxLines представлял собой случайный финальный фрагмент, который сделал мой перенос TextView.

Ответ 2

В случае, когда TextView находится внутри a TableLayout, решение должно установить android:shrinkColumns="1" на TableLayout. (Замените 1 номером столбца, в котором находится TextView, который вы хотите обернуть. (0-indexed))

AFAICT, никакие другие атрибуты не нужны на TextView.

В других случаях см. другие ответы здесь.

FWIW, я изначально получил работу с

 <TextView
   android:id="@+id/inventory_text"
   android:layout_width="fill_parent"
   android:layout_weight="1"
   android:width="0dp"

но это привело к некоторому лишнему пустому пространству в нижней части диалогового окна, в котором все было.

Ответ 3

Схема ограничения

<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"/>
  • Убедитесь, что ширина вашего макета равна нулю
  • левые/правые ограничения определены
  • высота макета wrap_content позволяет расширение вверх/вниз.
  • Установите android:maxLines="2" чтобы предотвратить вертикальное расширение (например, 2)
  • Эллипсы пробные хорошая идея с макс линий android:ellipsize="end"

Ширина 0dp позволяет использовать ограничения влево/вправо для определения ширины вашего виджета.

Установка ограничений влево/вправо устанавливает фактическую ширину вашего виджета, в которую будет переноситься текст.

Документы по макету ограничений

Ответ 4

Вы должны использовать 2 параметра:

  • android:ellipsize="none": текст не разрезается на ширину текста

  • android:scrollHorizontally="false" текст обертывается на столько строк, сколько необходимо

Ответ 5

Это должно устранить вашу проблему: android:layout_weight="1".

Ответ 6

ОК, ребята, правда, где-то в середине, вы должны увидеть проблему из родительского представления и дочернего. Решение ниже работает ТОЛЬКО, когда режим spinner = dialog вне зависимости от версии Android (там нет проблем.. протестировал его в VD и DesireS с Android = > 2.2):

  • . Установите режим spinner (родительский), например:

    android:spinnerMode="dialog"  
    
  • Задайте свойства текстового представления (дочерний настраиваемый вид):

    android:layout_weight="1"  
    android:ellipsize="none"  
    android:maxLines="100"  
    android:scrollHorizontally="false"
    

Надеюсь, это сработает и для вас.

Ответ 7

Установив android:maxEms в заданное значение вместе с android:layout_weight="1", он заставит TextView обернуться, когда он достигнет заданной длины ems.

Ответ 8

В Android Studio 2.2.3 в свойстве inputType есть свойство, называемое textMultiLine. Выбрав этот параметр, я выбрал для себя аналогичную проблему. Надеюсь, что это поможет.

Ответ 9

Просто работал над TextView внутри макета внутри RecyclerView. У меня был отрезанный текст, например, для Read this message, я увидел: Read this. Я попытался установить android:maxLines="2" в TextView, но ничего не изменилось. Однако android:lines="2" привел к Read this в первой строке и message на 2-й.

Ответ 10

У меня была та же проблема. После изменений он заработал -

android:layout_width="wrap_content"

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

Ответ 11

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

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

  • сбалансированный
  • высокое качество
  • просто

Проектирование в вашем 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 или более, то в Coding

yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);

Для получения дополнительной ссылки обратитесь к BreakStrategy

Textview breakStrategy image

Ответ 12

Вы можете использовать поддержку автоматического изменения размера библиотеки для TextView, проверьте мой ответ в аналогичной теме.

Ответ 13

Вам нужно добавить свой 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>

Ответ 14

Странно - я создал свой 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);

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

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

Ответ 15

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

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

android:layout_marginRight="52dp"

Ответ 16

Попробуйте подход @Guykun

android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"

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

Ответ 17

Просто установите 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"/>

Ответ 18

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

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

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

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

Ответ 19

Самый простой способ сделать это:

android:layout_width="match_parent"
android:layout_height="wrap_content"

Это будет переносить текст по умолчанию

Ответ 20

Я знаю это поздно, но это может помочь кому-то другому. Просто установите ширину в 0dp

 <TextView 
       android:layout_width="0dp" 
       .../>

Ответ 21

На самом деле это очень просто. Просто пиши: + "\n", где бы вы ни захотели использовать wordwrap