web-dev-qa-db-fra.com

Android et affichage de texte à lignes multiples dans un TextView dans un TableRow

J'affiche un TableLayout avec des lignes comme suit:

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

Je frappe cela avec tout ce que je peux trouver ici et auquel je peux penser pour permettre au texte de se dérouler sur plusieurs lignes, mais en vain: Le texte est toujours forcé sur une seule ligne, en cours d'exécution sur l'écran. Il peut être important que je travaille à l'intérieur d'un TableRow ici, et pour autant que je sache, cela n'a pas été traité sur ce site.

Alors, comment puis-je forcer mon deuxième TextView à encapsuler sur plusieurs lignes?

49
SK9

TextView encapsulera le texte si la colonne dans laquelle il se trouve est définie pour se réduire. Parfois, il ne s'emballe pas exactement, si le texte se termine par ", ...", alors il est un peu plus long qu'exactement n lignes.

Voici un exemple, le TextView avec l'id question se terminera:

<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>
98
Michael Biermann

Par souci d'exhaustivité, voici comment mon TableLayout lit en 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>

Je remplis plus tard ceci avec TableRows.

14
SK9

Par code fonctionne également:

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

1 est le nombre de colonnes.

3
Susana Mar Flores

Essayez peut-être comme suit:

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

Je sais, ressemble un peu à une solution "en fauteuil roulant", mais fonctionne pour moi, même si je remplis également un texte par programme.

2
87element

Vous pouvez également utiliser le code ci-dessous

<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>
0
Jitendra Nandiya