我正在以编程方式创建一个 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 可以。
setSingleLine()
或 setSingleLine(true)
阻止 TextView 将其高度更改为更多行,并强制 TextView 忽略换行符(字符串中的符号 \n
)。
setMaxLines(int n)
显示 TextView 中显示的字符串的前 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);
textview.setMaxLines(maxLines); // 设置显示的最大行数 textView.setEllipsize(TextUtils.TruncateAt.END); // 设置椭圆位置