Android 以编程方式创建带省略号的TextView

Android 以编程方式创建带省略号的TextView,android,textview,Android,Textview,我正在以编程方式创建一个文本视图,希望在最后省略号 伪代码: tv.setEllipsize(TextUtils.TruncateAt.END); tv.setHorizontallyScrolling(false); tv.setSingleLine(); 上述方法非常有效 tv.setEllipsize(TextUtils.TruncateAt.END); tv.setHorizontallyScrolling(false); tv.setM

我正在以编程方式创建一个文本视图,希望在最后省略号

伪代码:

    tv.setEllipsize(TextUtils.TruncateAt.END);
    tv.setHorizontallyScrolling(false);
    tv.setSingleLine();
上述方法非常有效

    tv.setEllipsize(TextUtils.TruncateAt.END);
    tv.setHorizontallyScrolling(false);
    tv.setMaxLines(1);
这是行不通的。这是虫子吗?我不明白为什么在指定maxLine(特别是maxLine为1)时,不能将文本放在末尾的省略号上,但设置单列行是可以的。

setSingleLine()
setSingleLine(true)
阻止TextView将其高度更改为更多行,并强制TextView忽略换行符(字符串中的符号
\n

setMaxLines(int n)
显示文本视图中显示的字符串的前n行,这些行之间用换行符分隔

例如,字符串为“我的第一行\n和第二行\n以及第三行”

  • setSingleLine()
    允许TextView显示“我的第一行和我的..”,因为超出了显示宽度,并且
  • setMaxLines(1)
    结果为“我的第一行”
  • setMaxLines(2)
    结果是“我的第一行”和一行下面的“和我的第二行”
  • setMaxLines(3)
    显然对这个示例字符串没有任何影响
更新:这适用于“带截断的setDoubleLine”:


太棒了。有可能有一个文本视图是两条线,并且在末尾仍然是椭圆的吗?例如,setDoubleLine()等等?这就是我想象中的maxLine的工作原理。值得一提的是,我的高度和宽度设置为dip值,而不是匹配父项。@AndreyButov谢谢你建议编辑,如果不睡觉,我会接受的。我现在根据你的建议更正了帖子。再次感谢。
// 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);