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

问题描述 投票:0回答:2

我正在以编程方式创建一个 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 可以。

android textview
2个回答
84
投票

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

0
投票

textview.setMaxLines(maxLines); // 设置显示的最大行数 textView.setEllipsize(TextUtils.TruncateAt.END); // 设置椭圆位置

© www.soinside.com 2019 - 2024. All rights reserved.