Андроид символ переноса строки

TextView

Компонент TextView предназначен для отображения текста без возможности редактирования его пользователем, что видно из его названия (Text — текст, view — просмотр).

Находится в разделе Texts.

TextView — один из самых используемых компонентов. С его помощью пользователю удобнее ориентироваться в программе. По сути, это как таблички: Руками не трогать, По газону не ходить, Вход с собаками воспрещен, Часы работы с 9.00 до 18.00 и т.д., и служит для представления пользователю описательного текста.

Для отображения текста в TextView в файле разметки используется атрибут android:text, например:

Такой подход является нежелательным. Рекомендуется всегда использовать текстовые ресурсы. В будущем эта привычка позволит вам обеспечить многоязыковую поддержку:

Программная установка текста

Программно текст можно задать методом setText():

Атрибуты

Для всех вышеперечисленных атрибутов в классе TextView есть соответствующие методы для чтения или задания соответствующих свойств.

Программно установим размеры текста при помощи setTextSize() с различными единицами измерения.

По умолчанию у компонентов TextView отсутствует фоновый цвет. Чтобы задать цвет, укажите значение Drawable для атрибута android:background. В качестве значения Drawable может использоваться изображение или XML-представление фигуры, включающий ресурс Drawable (поместить в папку res/drawable).

Программная установка фона

В некоторых случаях программисты из-за невнимательности неправильно меняют фон элемента программным способом и удивляются, почему ничего не работает.

Предположим, у вас определён в ресурсах зелёный цвет:

Следующий код будет ошибочным:

Нужно так (два варианта):

Реагируем на событие onClick

Если вы хотите, чтобы TextView обрабатывал нажатия (атрибут android:onClick), то не забывайте также использовать в связке атрибут android:clickable=»true». Иначе работать не будет!

Многострочный текст

Если вы хотите создать многострочный текст в TextView, то используйте символы \n для переноса строк.

Например, в ресурсах:

Обратите внимание, что в тексте также применяется простое форматирование.

Также перенос на новую строку можно задать в коде:

Увеличиваем интервалы между строками

Вы можете управлять интервалом между соседними строчками текста через атрибут android:lineSpacingMultiplier, который является множителем. Установите дробное значение меньше единицы, чтобы сократить интервал или больше единицы, чтобы увеличить интервал между строками.

Бой с тенью

Чтобы оживить текст, можно дополнительно задействовать атрибуты для создания эффектов тени: shadowColor, shadowDx, shadowDy и shadowRadius. С их помощью вы можете установить цвет тени и ее смещение. Во время установки значений вы не увидите изменений, необходимо запустить пример в эмуляторе или на устройстве. В следующем примере я создал тень красного цвета со смещением в 2 пикселя по вертикали и горизонтали. Учтите, что для смещения используются единицы px (пиксели), единицы dp не поддерживаются.

Программный эквивалент — метод public void setShadowLayer (float radius, float dx, float dy, int color):

Создание ссылок автоматом

У TextView есть ещё два интересных свойства Auto link (атрибут autoLink) и Links clickable (атрибут linksClickable), которые позволяют автоматически создавать ссылки из текста.

Выглядит это следующим образом. Предположим, мы присвоим элементу TextView текст Мой сайт: developer.alexanderklimov.ru и применим к нему указанные свойства.

При этом уже на этапе разработки вы увидите, что строка адреса сайта после слов Мой адрес: стала ссылкой. Если вы запустите приложение и нажмете на ссылку, то откроется браузер с указанным адресом. Вам даже не придется писать дополнительный код. Аналогично, если указать номер телефона (параметр phone), то запустится звонилка.

Читайте также:  Как усилить звук android

У ссылки есть интересная особенность — при длительном нажатии на ссылку появляется диалоговое окно, позволяющее скопировать ссылку в буфер обмена.

Атрибут autoLink позволяет комбинировать различные виды ссылок для автоматического распознавания: веб-адрес, email, номер телефона.

Цвет ссылки можно поменять через свойство Text color link (XML-атрибут textColorLink), а программно через метод setTextLinkColor().

Программно можно установить ссылки на текст через класс Linkify:

Кроме константы ALL, можно также использовать Linkify.EMAIL_ADDRESSES, Linkify.MAP_ADDRESSES, Linkify.PHONE_NUMBERS. К сожалению, русские адреса не распознаются. В моём случае индекс был распознан как телефонный номер, а город и улица не стали ссылкой.

В таких случаях придётся самостоятельно добавить ссылки в текстах. Например, определим ссылку в ресурсе:

Присвоим созданный ресурс тексту в TextView и запустим пример. Сам текст будет выглядеть как ссылка, но реагировать не будет. Чтобы исправить данную проблему, добавим код:

Ссылки в тексте выглядят не совсем удобными. Есть отдельная библиотека, которая улучшает функциональность. Описание проблем и ссылка на библиотеку есть в статье A better way to handle links in TextView — Saket Narayan.

Совет: Используйте полупрозрачность с умом

Если вам нужно установить текст полупрозрачным, то не используйте атрибут android:alpha:

Дело в том, что такой подход затрачивает много ресурсов при перерисовке.

Атрибут textColor позволяет установить полупрозрачность без потери производительности:

Выделить текст для копирования

По умолчанию, текст в TextView нельзя выделить для копирования. Но в API 11 появилась такая возможность, которая может пригодиться. Делается либо при помощи XML-атрибута android:textIsSelectable, либо через метод setTextIsSelectable().

Добавьте в разметку два компонента TextView и одно текстовое поле EditText для вставки скопированного текста. У первой текстовой метки установим возможность выделения текста декларативно.

Для второго компонента возможность выделения создадим программно.

Сделайте долгий тап на тексте в любом TextView. Увидите стандартные ползунки для выбора длины текста. Скопируйте текст, сделайте длинный тап в EditText и вставьте текст.

Источник

Как добавить разрыв строки в Android TextView?

Я пытаюсь добавить разрыв строки в TextView.

Я попробовал \ n, но это ничего не делает. Вот как я устанавливаю свои тексты.

Это моя строка: some test line 1 \n some test line 2

Он должен выглядеть так:

Но это выглядит так: в some test line 1 some test line 2 .

Я что-то упускаю?

\r\n работает для меня, вот так:

Поэтому необходимо обернуть в CDATA и сломаться внутри как html-теги

Спасибо за вашу помощь!

Android версии 1.6 не распознает \ r \ n. Вместо этого используйте: System.getProperty («line.separator»)

Linebreaks (\ n) работают только в том случае, если вы помещаете значение строки в кавычки следующим образом:

Это не приведет к разрыву строк, если вы поместите его без кавычек следующим образом:

Да, это так просто.

Пробовал все вышесказанное, сделал некоторые исследования моих собственных, что привело к следующему решению для рендеринга штрих-кода linefeed:

Используя метод замены, вам необходимо отфильтровать экранированные строки (например, «\\ n»)

Только тогда каждый экземпляр строки «\ n» escape-символов выводится в фактический поток строк

В этом примере я использовал базу данных noSQL для сценариев Google Apps (ScriptDb) с форматированными данными JSON.

Это сработало для меня

Существует два пути. Если вы используете свою строку как необработанную строку, вам нужно использовать символ новой строки. Если вы используете его как html, например, путем разбора его с помощью Html.fromString , второй вариант лучше.

Читайте также:  Sonic mania android v8 beta test

1) Символ новой строки \n

2) Html newline tag или

Это сработало для меня, может быть, кто-то узнает об этом:

Используется Android Studio 0.8.9. Единственный способ, который работал для меня, – \n . Ни упаковка с CDATA, ни работа или
работали.

Если вы используете XML для объявления вашего TextView, используйте android:singleLine = «false» или в Java, используйте txtSubTitle.setSingleLine(false);

Я использую следующее:

Попробуйте дважды проверить свои локализации. Возможно, вы пытаетесь отредактировать один файл (локализация), но на самом деле используете другое приложение, как в моем случае . Системный язык по умолчанию – русский, а я пытаюсь редактировать английскую локализацию.

В моем случае рабочим решением является использование «\ n» в качестве разделителя строк:

Очень просто: используйте «\ n»

\ N соответствует ASCII char 0xA, который является «LF» или линией

\ R соответствует ASCII char 0xD, который является «CR» или возвратом каретки

Это датируется самыми первыми пишущими машинами, где вы можете выбрать только линию подачи (и введите только строку ниже) или строку + возврат каретки (которая также перемещается в начало строки)

На Android / java \ n соответствует возврату каретки + линии, поскольку в противном случае вы просто переписывали бы ту же строку

Также вы можете добавить «
» Вместо \ n.

Это код с экранированным HTML для

И затем вы можете добавить текст в TexView:

Вы также можете использовать String-Editor для Android Studio, он автоматически генерирует линейные тормоза и прочее подобное …

Я нашел другой метод: необходимо добавить атрибут » android: maxWidth =» 40dp « «. Конечно, это может не сработать отлично, но это дает разрыв строки.

Источник

Как добавить разрыв строки в Android TextView?

Я пытаюсь добавить разрыв строки в TextView.

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

Это моя строка: some test line 1 \n some test line 2

Это должно показать так:

Но это показывает , как так: some test line 1 some test line 2 .

Я что-то упускаю?

\n у меня работает, вот так:

так что обтекание в CDATA необходимо и разрывы добавляются внутрь как HTML-теги

Версия Android 1.6 не распознает \ r \ n. Вместо этого используйте: System.getProperty («line.separator»)

Разрыв строки (\ n) работает только в том случае, если вы указали значение строкового ресурса в кавычках:

Это не будет делать разрывы строк, если вы поставите его без кавычек, как это:

да, это так просто

Попробовал все вышеизложенное, провел собственное исследование, в результате чего было найдено следующее решение для отображения escape-символов перевода строки:

Используя метод замены, вам нужно отфильтровать экранированные переводы строк (например, ‘\\ n’)

Только тогда каждый экземпляр escape-символа перевода строки ‘\ n’ будет преобразован в фактический перевод строки.

Для этого примера я использовал базу данных Служб Google Scripting noSQL (ScriptDb) с данными в формате JSON.

Это сработало для меня

Есть два способа обойти это. Если вы используете вашу строку как необработанную строку, вам нужно использовать символ новой строки. Если вы используете его как HTML, например, анализируя его Html.fromString , второй вариант лучше.

1) символ новой строки \n

2) HTML-тег новой строки
или

Это сработало для меня, может быть, кто-то найдет это полезным:

Если вы используете XML для объявления вашего использования TextView android:singleLine = «false» или в Java, используйте txtSubTitle.setSingleLine(false);

Используется Android Studio 0.8.9. Единственный способ, сработавший для меня, это использование \n . Ни упаковка с CDATA, ни
или не
работали.

Читайте также:  Читалка doc файлов для андроид

Я использую следующее:

очень просто: используйте «\ n»

\ n соответствует ASCII char 0xA, который является ‘LF’ или переводом строки

\ r соответствует ASCII char 0xD, который является ‘CR’ или переводом каретки

это восходит к самым первым пишущим машинкам, где вы можете выбрать только перевод строки (и введите только строку ниже) или перевод строки + возврат каретки (который также перемещается в начало строки)

в Android / java \ n соответствует возврату каретки + перевод строки, так как в противном случае вы просто «перезаписали бы» ту же строку

Попробуйте перепроверить ваши локализации. Возможно, вы пытаетесь редактировать один файл (локализация), но на самом деле программа использует другой, как в моем случае . Системный язык по умолчанию русский, а я пытаюсь редактировать английскую локализацию.

В моем случае, рабочим решением является использование «\ n» в качестве разделителя строк:

Также вы можете добавить «
» вместо \ n.

Это HTML экранированный код для

И тогда вы можете добавить текст в TexView:

Вы также можете использовать String-Editor в Android Studio, он автоматически генерирует линейные тормоза и тому подобное .

Как Html.fromHtml устаревший, я просто использовал этот код, чтобы получить String2 в следующей строке.

Самый простой способ сделать это — перейти к значениям / строкам (в папке ресурсов)

Объявите строку там:

И в вашем конкретном XML-файле просто вызовите строку как

Я нашел другой метод: необходимо добавить атрибут » android: maxWidth =» 40dp « «. Конечно, это может не работать идеально, но это дает разрыв строки.

\ n не работал для меня. Я смог решить проблему, изменив xml на text и создав текстовое свойство textview, как показано ниже.

Надеюсь, это поможет тем, кто сказал, что \ n не работает для них.

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

Может быть, вы можете вставить lf в текст, но он не отображается? Убедитесь, что у вас достаточно высоты для контроля. Например:

Может быть не прав

В моем случае я решил эту проблему, добавив следующее:

Я чувствую, что необходим более полный ответ, чтобы описать, как это работает более тщательно.

Во-первых, если вам нужно расширенное форматирование, посмотрите руководство по использованию HTML в строковых ресурсах .
Затем вы можете использовать
и т. Д. Однако, это требует установки текста с помощью кода.

Если это простой текст, есть много способов избежать символа новой строки (LF) в статических строковых ресурсах .

Заключение строки в двойные кавычки

Самый чистый способ — заключить строку в двойные кавычки.
Это сделает так, что пробел интерпретируется точно так, как он выглядит, а не свернут.
Тогда вы можете просто использовать символ новой строки в этом методе (не используйте отступы).

Обратите внимание, что некоторые символы требуют специального экранирования в этом режиме (например, \» ).

Экранирующие последовательности ниже также работают в режиме кавычек.

При использовании одной строки в XML для представления многострочных строк

Самый элегантный способ избежать перехода на новую строку в XML — это использовать его кодовую точку (10 или 0xA в шестнадцатеричном формате), используя его сущность XML / HTML или . Это способ XML избежать любого символа .
Однако, похоже, это работает только в режиме кавычек.

Другой способ — просто использовать \n , хотя, по моему мнению, это негативно влияет на удобочитаемость (поскольку это не специальная escape-последовательность в XML, Android Studio не выделяет ее).

Не включайте новую строку или любые пробелы после любой из этих escape-последовательностей, так как это будет интерпретироваться как дополнительное пространство.

Источник

Оцените статью