Почему Android заменяет символы новой строки пробелами как для TextView, так и для уведомлений? - PullRequest
0 голосов
/ 09 января 2020

Фон

У меня есть строка ввода, которую мне нужно показать в ограниченном количестве строк (1 в данном случае, но может измениться) и при уведомлении. Текст может содержать символы новой строки ("\ n"), поэтому, если он ограничен, он не должен показывать строки ниже.

Проблема

Предположим, у вас есть строка, которую вы хотите для отображения в TextView, но в этой строке есть несколько новых строк.

Пример:

textView.text = "Hello\n\nWorld"

Если вы установите android:maxLines="1" и / или android:singleLine="true", на самом деле все помещается в одна строка, но она просто заменит новые строки пробелами:

https://i.imgur.com/ivTABte.png

Не только это, но и попытка установить текст в уведомлении, Я вижу точно такое же поведение, но оно не должно быть ограничено количеством строк. Там я также вижу «Hello World» ...

Вот его фрагмент:

        val builder = ...
        builder.setSmallIcon(...)
        builder.color = ...
        builder.setContentTitle(...)
                .setTicker(...).setContentText(theProblematicText)

Что я пробовал

Я пробовал различные атрибуты для TextView, но я не смог найти тот, который это исправит.

Я знаю, что мог бы, если бы захотел, просто проанализировать введенный текст и обрезать его, когда я достигну первого "\ n", но это не так хорошее решение, потому что оно обрабатывает только ограничение в одну строку, а также не решает проблему с уведомлениями.

Вопросы

  1. Почему Android заменяет эти символы на простые пространства?
  2. Как можно избежать этого как для TextView, так и для уведомлений?
  3. Как я могу заставить TextView отображать только первые X строк входного текста? Я действительно должен разобрать это?
...