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

sga*_*man 28 android textview

我是以编程方式创建一个TextView,我想在最后省略省略号.

伪代码:

    tv.setEllipsize(TextUtils.TruncateAt.END);
    tv.setHorizontallyScrolling(false);
    tv.setSingleLine();
Run Code Online (Sandbox Code Playgroud)

以上工作很棒.

    tv.setEllipsize(TextUtils.TruncateAt.END);
    tv.setHorizontallyScrolling(false);
    tv.setMaxLines(1);
Run Code Online (Sandbox Code Playgroud)

这不起作用.这是一个错误吗?我不明白为什么在指定maxLines时最后不能将文本转换为省略号,尤其是maxLine为1但是setSingleLine没问题.

ste*_*fan 60

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);
Run Code Online (Sandbox Code Playgroud)

  • 惊人的。是否有可能有一个两行的 TextView,但最后仍然是椭圆形?即 setDoubleLine() 等?这就是我想象的 maxLine 的工作方式。对于它的价值,我的高度和宽度设置为倾角值,而不是 match_parent。 (2认同)