Android и отображение многострочного текста в TextView в TableRow - PullRequest
49 голосов
/ 08 марта 2011

Я отображаю TableLayout со строками следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<TableRow
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <TextView   
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/one"
            android:layout_marginLeft="10dip"
            android:textColor="#B0171F" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/one"
            android:id="@+id/two"
            android:layout_marginLeft="10dip"
            android:ellipsize="none"
            android:singleLine="false"
            android:scrollHorizontally="false"
            android:maxLines="10"
            android:textColor="@android:color/black" />

  </RelativeLayout>

</TableRow>

Я поражаю это всем, что могу найти здесь, и могу придумать, чтобы текст был перенесен на несколько строк, но безрезультатно: текст всегда переносится в одну строку, убегая с экрана. Может иметь значение, что я работаю внутри TableRow здесь, и, насколько я могу судить, это не рассматривалось на этом сайте.

Итак, как заставить мой второй TextView переноситься на несколько строк?

Ответы [ 5 ]

98 голосов
/ 22 марта 2011

TextView обернет текст, если столбец, в котором он находится, настроен на сжатие.Иногда он не переносится точно, если текст оканчивается на «, ...», тогда он немного длиннее, чем ровно n строк.

Вот пример, TextView с идентификатором question будетупаковка:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:shrinkColumns="*">
    <TableRow>
         <TextView
             android:id="@+id/question"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"/>
    </TableRow>
</TableLayout>
14 голосов
/ 23 марта 2011

Ради полноты, вот как мой TableLayout читает в XML:

<TableLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="10dp"
  android:shrinkColumns="0"
  android:stretchColumns="0"
  android:id="@+id/summaryTable">
</TableLayout>

Позже я заполняю это TableRow с.

3 голосов
/ 10 сентября 2014

По коду также работает:

TableLayout tablelayout = (TableLayout) view.findViewById(R.id.table);
tablelayout.setColumnShrinkable(1,true);

1 - номер столбца.

2 голосов
/ 21 марта 2011

Может быть, попробуйте сделать следующее:

myTextView.setText(Html.fromHtml("On " + stringData1 + "<br> at " + strinData2);

Я знаю, это немного похоже на решение для «инвалидной коляски», но работает для меня, хотя я также заполняю текст программно.

0 голосов
/ 27 апреля 2018

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

<TableRow >
    <TextView
        android:id="@+id/tv_description_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:padding="8dp"
        android:text="@string/rating_review"
        android:textColor="@color/black"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4"
        android:padding="8dp"
        android:text="The food test was very good."
        android:textColor="@color/black"
        android:textColorHint="@color/hint_text_color" />
</TableRow>
...