我有一个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>
检查文本(在多行中)是否比可用空间长的最简单的解决方案是什么(我不想硬编码行数,因为不同屏幕的大小不同)?有指标吗?
答案 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
}
希望这有助于你。