textView汉语本过长被截断的解决方案
textView中文本过长被截断的解决方案
原问题来自于****问答频道,更多解决方案见:http://ask.****.net/questions/1840
问题描述:
有一个多行文本的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>
不知道应该怎么让应用能判断文本有多长?有没有超出范围。每个屏幕尺寸不同所以不能通过硬编码设定行数判断。
解决方案:
在LinearLayout
中加入TextVew
,然后比较TextVew 和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 }