我正在寻找一些关于如何正确使用TextView
的示例代码。
我在Google搜索中找到的唯一内容是test unit for the TextUtils class。
一些指导将不胜感激。
修改 的
我查看了我在这里的答案并尝试在我的代码上实现它。我使用了这段代码:
TextView title = (TextView) view.findViewById(R.id.listitemThreadsTitle);
title.setVisibility(View.VISIBLE);
TextPaint p = title.getPaint();
String strTitle = "Moe, Joe, Isaac, Bethany, Cornelius, Charlie";
title.setText(strTitle);
float avail = p.measureText(strTitle);
CharSequence ch = TextUtils.commaEllipsize(strTitle, p, avail, "one more", "%d more");
title.setText(ch);
但结果绝对不是它应该是的。
更像是:Moe,Joe,Isaac,Betha ......
而不是:Moe,Joe,Isaac + 3
答案 0 :(得分:4)
public static CharSequence commaEllipsize (CharSequence text, TextPaint p,
float avail, String oneMore, String more)
文字 - 要截断的文字
p - 用于测量文本的Paint
avail - 文字的水平宽度
oneMore - 当前语言环境中“1 more”的字符串
更多 - 当前区域设置中“%d more”的字符串
String text = "Apple, Orange, Mango, Banana";
TextView tv = new TextView(context);
float textWidth = tv.getPaint().measureText(text );
String tempStr = TextUtils.commaEllipsize(text, tv.getPaint(), textWidth,
"1 more", "%d more");
tv.setText(tempStr);
更新:
TextView title = (TextView) view.findViewById(R.id.listitemThreadsTitle);
title.setVisibility(View.VISIBLE);
TextPaint p = title.getPaint();
String strTitle = "Moe, Joe, Isaac, Bethany, Cornelius, Charlie";
title.setText(strTitle);
float avail = title.getMeasuredWidth();
CharSequence ch = TextUtils.commaEllipsize(strTitle, p, avail, "one more", "%d more");
title.setText(ch);