TextView中有个ellipsize属性,作用是当文字过长时,该控件该如何显示,解释如下:
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="end" 省略号在结尾
android:ellipsize="marquee" 省略号跑马灯显示
或者在程序中可通过setEillpsize显式设置
注: EditText不支持marquee属性
使用示例
<TextView
android:id="@+id/calendar_schedule"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:textSize="13sp"
tool:text="开重要会议"/>
效果预览
附送一个计算中英文混输字符串长度的方法,使用中文占两位,其他字符占1位的方法来计算,原本没发现textview自带过长省略功能的时候打算自己手撸的……..
private int calStrLen(String str) {
int m = 0;
char arr[] = str.toCharArray();
for (char c : arr) {
if (String.valueOf(c).matches("[\u4e00-\u9fa5]")) //中文字符
{
m = m + 2;
} else {
m = m + 1;
}
}
return m;
}