我正在以编程方式创建一个我想在末尾省略的TextView。
伪代码:
tv.setEllipsize(TextUtils.TruncateAt.END);
tv.setHorizontallyScrolling(false);
tv.setSingleLine();
以上作品很棒。
tv.setEllipsize(TextUtils.TruncateAt.END);
tv.setHorizontallyScrolling(false);
tv.setMaxLines(1);
这不起作用。这是一个错误吗?我不明白为什么在指定maxLines时最后不能将文本转换为省略号,尤其是maxLine为1但是setSingleLine没问题。
答案 0 :(得分:54)
setSingleLine()
或setSingleLine(true)
阻止TextView将其高度更改为更多行,并强制TextView忽略换行符(字符串中的符号\n
)。
setMaxLines(int n)
显示TextView中显示的字符串的前n行,它们以换行符分隔。
例如,让String为“我的第一行\ n和我的第二行\ n和第三行”
setSingleLine()
让TextView显示“我的第一行和我的..”,因为超出了显示宽度,setMaxLines(1)
导致“我的第一行”setMaxLines(2)
会导致“我的第一行”并且在“我的第二行”字样下面setMaxLines(3)
显然对此示例字符串没有任何影响。更新:这应该适用于“setDoubleLine with truncation”:
// optional: string.replace("\n",""); or string.replace("\n"," ");
tv.setSingleLine(false);
tv.setEllipsize(TextUtils.TruncateAt.END);
int n = 2; // the exact number of lines you want to display
tv.setLines(n);