我有一个lsit视图,我需要添加一些文本。 在适配器中,我需要追加...最后我使用以下内容 当我给予
android:ellipsize="end"
仅显示2行
例如:
asdnfsdfdsf asdfsdfasdf
sdfsd sdfsdf sdfsd ad ...
当我给出
android:ellipsize="start"
如下:
asdnfsdfdsf asdfsdfasdfd
... sdfsd sdfsdf sdfsd ad
我使用的完整代码:
<TextView android:layout_width="wrap_content" android:background="#016A7D"
android:layout_height="80dp" android:textColor="#000000"
android:maxLines="4"
android:id="@+id/list_report_desciption"
android:ellipsize="end"
/&GT; 我得到的输出是:
一个更聪明的星球到底是什么? 看起来像? IT如何变化?甲...
实际上它包含超过6行
有什么东西我需要设置,所以我需要得到3行
谢谢
答案 0 :(得分:2)
文本椭圆化看起来很麻烦,因为这个报告: http://code.google.com/p/android/issues/detail?id=10554
通过将android:singleLine
属性设置为true,解决方法允许椭圆化一行文本。但是这个属性已被弃用。
答案 1 :(得分:0)
对我来说没有任何作用:-(
我刚刚确定了长度。切断该长度的字符串,然后追加'......'
现在它为我工作。
答案 2 :(得分:0)
我自己正在寻找一个简单的解决方案,我最终得到了类似的东西:
private String getTextWithMoreIndicator(TextView textView, String text) {
long maxVisibleChars = textView.getPaint().breakText(text, true, textView.getMeasuredWidth(), null);
if(maxVisibleChars < text.length()) {
text = text.substring(0, (int)maxVisibleChars -3) + "...";
}
return text;
}
答案 3 :(得分:0)
您接受的解决方案无法在所有设备上正确缩放。
原因:“a”的宽度小于“A”,因此,如果您根据某个大小(例如15个字母)截断字符串并通过代码添加“...” 。您可能会看到不期望的结果。
现在来解决方案: -
<强>解决方案:强>
解决方案#1: 将以下3个属性添加到TextView中,您将获得所需的结果:)
<TextView
android:ellipsize="end"
android:lines="1"
android:scrollHorizontally="true" />
解决方案#2: 另一种解决方法可能是,您可以决定选取文本(将文本从右向左移动的花哨动画)。为此,您需要在TextView xml中使用以下属性: -
<TextView
android:id="@+id/my_text_view"
android:ellipsize="marquee"
android:lines="1"
android:scrollHorizontally="true"
android:marqueeRepeatLimit="marquee_forever" />
然后在您的代码中,您需要通过其ID获取TextView并输入以下行: -
TextView myTextView = (TextView) findViewById(R.id.my_text_view);
myTextView.setSelected(true);
####编辑: - ####
我刚想通知我的解决方案适用于大于2.3.x的Android版本,我们需要在TextView xml中添加以下行: -
android:singleLine="true"
虽然它是一个已弃用的属性,但你必须添加它,否则选框或“...”将不起作用。
希望这回答问题:)