我已按如下方式设置了文字视图:
<TextView
android:id="@+id/TextView_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:ellipsize="end"
android:maxLines="3"
android:textColor="@color/white"
android:textIsSelectable="false"
android:textSize="14sp" />
内部文本由布局缓冲器以编程方式设置,文本来自XML提要。我检查了源代码,没有杂散字符或换行符。
在运行Android 4.3的Nexus 4上测试此TextView我看到了奇怪的行为。
内部的字符串结束:“”Lorem ipsum dolor sit amet“
在Nexus上,这是在正确的位置截断,但不是以省略字符结尾,如:“dol ...”,我得到“dol ... s”,最后一个字符被遮挡了,因为它突破边缘。
增加保证金然后在最后给我“ipsum ... dol”。
我已经在我的其他测试设备上检查了一个运行4.1.2的Galaxy S3和一个运行4.0.3的Desire C,它们不存在。
有没有人用ellipsize看到这种行为:结束?对于我可能做错了什么或者我如何解决这个问题的任何建议?
答案 0 :(得分:6)
通过大量的反复试验,我发现它是由'\ n'字符引起的。当文本中某处有新行时,ellipsize =“end”会出现某种问题,即使它在ellipsize之后很好。
简单地做:
text = text.replace('\n',' ');
为我解决了这个问题
答案 1 :(得分:0)
<强>布局强>
<TextView
android:id="@+id/multiLineText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="3"/>
<TextView
android:id="@+id/ellipsizeMarkText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:text="..."/>
<强>代码强>
if(multiLineText.getLineCount() > multiLineText.getMaxLines()) {
ellipsizeMarkText.setVisibility(View.VISIBLE);
} else {
ellipsizeMarkText.setVisibility(View.GONE);
}