web-dev-qa-db-ja.com

Androidと、TableRowのTextViewに複数行のテキストを表示する

次のように行を含む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内で作業していることは重要かもしれませんが、これがこのサイトで処理されていないことがわかります。

それで、2番目のTextViewを強制的に多くの行に折り返すにはどうすればよいですか?

49
SK9

TextViewは、列が縮小するように設定されている場合、テキストを折り返します。テキストが「、...」で終わる場合、正確に折り返されない場合があり、正確にn行よりも少し長くなります。

次に例を示します。IDquestionのTextViewはラップします。

<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

完全を期すために、これは私の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>

後でTableRowsを入力します。

14
SK9

コードでも動作します:

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

1は列の数です。

3

次のようにしてみてください:

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

私は、「車椅子」ソリューションのように見えますが、私にとってはうまくいきますが、プログラムでテキストを埋めることもできます。

2
87element

以下のコードも使用できます

<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