Программно создать TextView с многоточием - PullRequest
26 голосов
/ 11 ноября 2011

Я программно создаю 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 Ответ

56 голосов
/ 11 ноября 2011

setSingleLine() или setSingleLine(true) запрещает TextView изменять свою высоту на большее количество строк и заставляет TextView игнорировать разрывы строк (символ \n в строке).

setMaxLines(int n) отображаетпервые n строк строки, отображаемых в TextView, которые разделены разрывом строки.

Например, пусть String будет «моей первой строкой \ n, а моей второй строкой \ n и третьей строкой»

  • setSingleLine() позволяет TextView отображать «моя первая строка и мой ..», так как ширина экрана превышена и
  • setMaxLines(1) приводит к «моей первой строке»
  • setMaxLines(2) приводит к тому, что "моя первая строка" и ниже строки с надписью "и моя вторая строка"
  • setMaxLines(3), очевидно, не влияет на эту строку образца.

Обновление: это должно работать для "setDoubleLine с усечением":

// 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...