以编程方式使用省略号创建TextView

时间:2011-11-10 22:57:11

标签: android textview

我正在以编程方式创建一个我想在末尾省略的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没问题。

1 个答案:

答案 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);