textview中的文本太长 - 仅显示结束部分

时间:2013-03-24 21:56:45

标签: android textview

我有一个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>

检查文本(在多行中)是否比可用空间长的最简单的解决方案是什么(我不想硬编码行数,因为不同屏幕的大小不同)?有指标吗?

2 个答案:

答案 0 :(得分: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选项,例如“middle”和“marquee”。请参阅:TextView:android:ellipsize

答案 1 :(得分:1)

尝试将TextVew放入LinearLayout并将textview高度与linearlayout height进行比较。

喜欢这个

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

希望这有助于你。