Подтвердить что ты не робот

Программно создавать TextView с многоточием

Я программно создаю TextView, который в конце концов хочу использовать многоточие.

псевдокод:

    tv.setEllipsize(TextUtils.TruncateAt.END);
    tv.setHorizontallyScrolling(false);
    tv.setSingleLine();

Вышеупомянутые работы GREAT.

    tv.setEllipsize(TextUtils.TruncateAt.END);
    tv.setHorizontallyScrolling(false);
    tv.setMaxLines(1);

Это не работает. Это ошибка? Я не понимаю, почему я не могу получить текст для эллипсов в конце при указании maxLines, особенно maxLine из 1, но setSingleLine в порядке.

4b9b3361

Ответ 1

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