0

TextViewがあります。内部の複数行のテキストが短く、使用可能なスペースに収まる場合、重力を上に設定します。

tv.setGravity(Gravity.TOP);

テキストがテレビのスペースより長い場合、次の方法でテキストの終わりのみを表示したいと思います。

tv.setGravity(Gravity.BOTTOM);

レイアウト:

    <RelativeLayout
        android:id="@+id/textLayout"
        android:layout_marginTop="16dp"
        android:layout_width="fill_parent"
        android:layout_height="110dp"
        android:orientation="vertical"
        android:visibility="visible" >

        <TextView
            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:gravity="top"
            android:text="Long text bla bla."
            android:textColor="@android:color/black"
            android:textColorHint="@android:color/black"
            android:textSize="37sp" />

       ...

    </RelativeLayout>

テキスト(多くの行)が使用可能なスペースよりも長いかどうかを確認する最も簡単な解決策は何ですか(画面ごとにサイズが異なるため、行数をハードコーディングしたくありません)?指標はありますか?

4

2 に答える 2

1

テキストの終わりを強制的に表示するためにを変更するのではなくgravity、テキストの終わりが表示されるように、先頭にドットが付いた省略記号を使用することをお勧めします。

    <TextView
        android:ellipsize="start"
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="top"
        android:text="Long text bla bla."
        android:textColor="@android:color/black"
        android:textColorHint="@android:color/black"
        android:textSize="37sp" />

また、「 」や「」android:ellipsizeなどの他のオプションのいくつかを選択することになる場合もあります。参照:TextView:android:ellipsizemiddlemarquee

于 2013-03-24T22:38:17.507 に答える
1

入れTextVewLinearLayout、textviewの高さとlinearlayoutの高さを比較してみてください。

このような

<RelativeLayout
        android:id="@+id/textLayout"
        android:layout_marginTop="16dp"
        android:layout_width="fill_parent"
        android:layout_height="110dp"
        android:orientation="vertical"
        android:visibility="visible" >

<LinearLayout 
        android:id ="@+id/linear"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:gravity="top"
            android:text="Long text bla bla."
            android:textColor="@android:color/black"
            android:textColorHint="@android:color/black"
            android:textSize="37sp" />

テーマを比較するには:

if(text.getHeight()>linear.getHeight()){
            //Here TextView longer than available space
        }

これがお役に立てば幸いです。

于 2013-03-24T22:38:57.337 に答える