最近研究了两天这个BUG,之前毫无进展,然后机缘巧合之下解决了这个问题.
我的需求是微信登录,然后获取到微信名称,显示在TextView上,众所周知,微信中经常带有许多emoji表情。
显示的文本是
“我的\uD83C\uDF32\uD83D\uDE4C\uD83D\uDC4Ftest3516\uD83D\uDE18”
不止为何显示出来长这样
我这边需求是TextView设置maxLine=1和ellipsize="end",
然后显示就是
问题就是这个蜜汁换行。
解决方法呢,就是把maxline=1改成singleline=true。
现在我们来看下maxline=1和singleline=true的区别,出去跑马灯那块的焦点不讲。
maxline是在限制高度,而single则是强行不换行。从换行的位置来讲,maxLines并不会改变其换行的位置,而singleLine则会。
singleLine的显示会好一些,因为如果超过一行singleLine会在一行内显示,后面加上"...",而maxlines="1" 则不会,它依然会在原来换行的位置换行,所以有时候一行不满,但是却不显示剩下的部分。
------------------------------------------------------------------------------------------------------------------------------------------------------
以上算是把需求解决了,但是遗留的两个问题。
1,为什么这个文本显示在TextView上时会将下面的视为一个整体,从而换行?
2,singleline=true,这个被遗弃的方法,要用什么代替?