0

我有一个文本视图。当内部的多行文本很短且适合可用空间时,我将重力设置为顶部:

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选项,例如“ middle”和“ marquee”。参见:TextView:android:ellipsize

于 2013-03-24T22:38:17.507 回答
1

尝试TextVew输入LinearLayout并将 textview 高度与线性布局高度进行比较。

像这样

<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 回答