Текст Android TextView не обернут

Может ли кто-нибудь сказать мне, что происходит с текстом? Текст длиннее одной строки не переносится на следующую строку, но выходит за пределы экрана.

Ниже приведен код:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dip"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip"> <TextView android:id="@+id/reviewItemEntityName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="event/venue" android:textColor="@color/maroon" android:singleLine="true" android:ellipsize="end" android:textSize="14sp" android:textStyle="bold" android:layout_weight="1" /> <ImageView android:id="@+id/reviewItemStarRating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:src="@drawable/title_1_star" /> </LinearLayout> <TextView android:id="@+id/reviewItemDescription" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Description comes here" android:textSize="12sp" android:layout_weight="1"/> </LinearLayout> </LinearLayout> 

Solutions Collecting From Web of "Текст Android TextView не обернут"

Я сам его исправил, ключ android:width="0dip"

 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dip" android:layout_weight="1"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip"> <TextView android:id="@+id/reviewItemEntityName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/maroon" android:singleLine="true" android:ellipsize="end" android:textSize="14sp" android:textStyle="bold" android:layout_weight="1" /> <ImageView android:id="@+id/reviewItemStarRating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" /> </LinearLayout> <TextView android:id="@+id/reviewItemDescription" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="12sp" android:width="0dip" /> </LinearLayout> <ImageView android:id="@+id/widget01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/arrow_nxt" android:layout_gravity="center_vertical" android:paddingRight="5dip" /> </LinearLayout> - <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dip" android:layout_weight="1"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip"> <TextView android:id="@+id/reviewItemEntityName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/maroon" android:singleLine="true" android:ellipsize="end" android:textSize="14sp" android:textStyle="bold" android:layout_weight="1" /> <ImageView android:id="@+id/reviewItemStarRating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" /> </LinearLayout> <TextView android:id="@+id/reviewItemDescription" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="12sp" android:width="0dip" /> </LinearLayout> <ImageView android:id="@+id/widget01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/arrow_nxt" android:layout_gravity="center_vertical" android:paddingRight="5dip" /> </LinearLayout> 

Единственным правильным ответом на этот вопрос является то, что вам нужно установить правильную ширину родителей (в данном случае FILL_PARENT , WRAP_CONTENT ) и использовать android:layout_weight=1 для текстового просмотра, которое необходимо обернуть.

SingleLine умолчанию SingleLine , поэтому никаких изменений не будет.

width установленная на 0px, будет работать, но не является хорошим решением.

В некотором примере (в виде таблицы в этот раз), используя xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="*" android:id="@+id/tableLayout1"> <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:text="test1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" /> <TextView android:layout_weight="1" android:text="test2 very long text that needs to be wrapped properly using layout_weight property and ignoring singleline since that is set by default..." android:layout_width="fill_parent" android:layout_height="wrap_content" /> </TableRow> </TableLayout> </LinearLayout> 

Если вы хотите установить это в коде, вы ищете layout_weight в качестве третьего параметра, как в этом примере, где он установлен в 1:

 row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); TextView label = new TextView(getApplicationContext()); label.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1f)); 

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

  • android:ellipsize="none" : текст не вырезается по ширине текста

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

Этого достаточно для использования в вашем XML-файле.

 android:singleLine="false". 

Надеюсь, он сработает.

Всего наилучшего!

Я не мог заставить любое из этих решений работать при использовании TableLayout>TableRow>TextView . Затем я нашел TableLayout.shrinkColumns="*" . Единственное другое решение, которое работало, заключалось в том, чтобы заставить TextView использовать layout_width:250px т. Д., Но мне не нравится форсировать ширину.

Попробуйте что-то подобное, если работаете со столами.

  <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:shrinkColumns="*"> 

Обратите внимание, что вам нужно shrinkColumns="*"

Очевидно, это находится в пределах <LinearLayout> . Итак, что-то вроде <LinearLayout> <TableLayout> <TableRow> <TextView>

Рекомендации:

TableLayout

http://code.google.com/p/android/issues/detail?id=4000

Надеюсь, что это помогает кому-то.

Один из ваших параметров компоновки неверен в вашем коде. В первом TextView

 android:layout_width="wrap_content" 

Перейти на

 android:layout_width="fill_parent" 

Текст, который не имеет размера ширины экрана, будет перенесен в следующую строку и настроен на android:singleline="false" .

Я новичок в Android (и GUI), но имею большой опыт работы с программным обеспечением. Я прочитал несколько уроков, и это мое понимание:

Layout_width и layout_height являются атрибутами TextView. Это инструкции о том, как TextView должен формировать себя, они не относятся к тому, как обрабатывать контент в TextView.

Если вы используете «fill_parent», вы говорите, что TextView должен формировать себя относительно родительского представления, он должен заполнить его.

Если вы используете «wrap_content», вы говорите, что вы должны игнорировать родительское представление, и пусть содержимое TextView определяет его форму.

Я думаю, что это путаница. «Wrap_content» не сообщает TextView о том, как управлять содержимым (для обертывания строк), он говорит, что он должен формировать себя относительно его содержимого. В этом случае, без новых символов строки, он формирует себя так, чтобы весь текст находился в одной строке (которая, к сожалению, переполняет родителя).

Я думаю, вы хотите, чтобы он заполнил родительский шрифт горизонтально и обернул его содержимое вертикально.

Установите высоту android:minHeight="some pixes" в виде текста android:minHeight="some pixes" или android:width="some pixels" . Это решит проблему.

В моем случае удаление типа ввода делало трюк, я использовал android: inputType = "textPostalAddress" из-за того, что мой текст был прикреплен к одной строке и не был обертыванием, устраняя эту проблему.

Даже если это старый поток, я бы хотел поделиться своим опытом, поскольку это помогло мне. Мое приложение отлично работало для ОС 2.0 и 4.0+, но для телефона HTC, работающего под OS 3.x, текст не был обернут. Что для меня работало, так это включить оба эти тега.

 android:maxLines="100" android:scrollHorizontally="false" 

Если вы устраните либо он не работал только для устройства os 3.0. Параметр «эллипсис» имел нейтральный эффект. Вот полный тег textview ниже

 <TextView android:id="@+id/cell_description" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="5dp" android:maxLines="100" android:scrollHorizontally="false" android:textStyle="normal" android:textSize="11sp" android:textColor="@color/listcell_detail"/> 

Надеюсь, это поможет кому-то.

Увеличьте высоту, т.е. Android: height = "Some size", он отлично работает для меня.

Я использовал android:ems="23" чтобы решить мою проблему. Просто замените 23 на лучшее значение в вашем случае.

 <TextView android:id="@+id/msg" android:ems="23" android:text="ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab " android:textColor="@color/white" android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

У меня была аналогичная проблема, где мои два горизонтально взвешенных TextViews не обертывали текст. Позже я узнал, что проблема связана с тем, что родительский родительский элемент view_content вместо match_parent.

Я думаю, это зависит от конкретной комбинации макетов на вашем дисплее. Некоторые флаги могут быть переопределены или проигнорированы. У меня есть TabHost с вкладками, каждая вкладка представляет собой список таблиц. Таким образом, это вкладка ListView, каждая строка которой представляет собой TableLayout из TextView. Я попробовал исправления, перечисленные выше, и никто из них не работал.

Я поместил этот атрибут:

 android:inputType="textMultiLine" 

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

================================================== ==========

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

 android:layout_height="Xdp" //where X is a number depends on how big Textview you want android:gravity="top" //in order to make your text start from the top of your TextView. 

Я знаю, что это правильно, но в моем случае проблема заключалась в установке свойства textSize в «dp» – я изменил его на «sp», и он отлично работает.

В моем случае, с TableRow > ScrollView > TextView , я решил проблему, установив android:layout_width в fill_parent на TableRow и wrap_content на ScrollView и TextView .

Вы должны использовать android:singleLine="false" в ur тегах TextView .

Наконец, мне удалось добавить несколько пикселей в высоту TextView, чтобы решить эту проблему.

Сначала вам нужно получить высоту TextView. Это не просто, потому что это 0, прежде чем он уже нарисован.

Добавьте этот код в onCreate:

 mReceiveInfoTextView = (TextView) findViewById(R.id.receive_info_txt); if (mReceiveInfoTextView != null) { final ViewTreeObserver observer = mReceiveInfoTextView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int height = mReceiveInfoTextView.getHeight(); int addHeight = getResources().getDimensionPixelSize(R.dimen.view_add_height); mReceiveInfoTextView.setHeight(height + addHeight); // Remove the listener if possible ViewTreeObserver viewTreeObserver = mReceiveInfoTextView.getViewTreeObserver(); if (viewTreeObserver.isAlive()) { viewTreeObserver.removeOnGlobalLayoutListener(this); } } }); } 

Вы должны добавить эту строку в dimens.xml

 <dimen name="view_add_height">10dp</dimen> 

Надеюсь, поможет.

Я просто удалил android:lines="1" и добавил android:maxLines="2" , это автоматически android:maxLines="2" текст. Проблема заключалась в атрибуте android:lines . Это приводит к тому, что перенос текста не происходит.

Мне не нужно было использовать maxEms или singleLine="false" (устаревший API), чтобы исправить это.

Я добавил \ n в середине моей строки, и это выглядело хорошо.

Чтобы обернуть текст и поместить текст в следующую строку, мы sholud используем «\ n», то есть новый символ строки в XML-файле макета, и проверяем изменение tht на эмуляторе не на экране макета.