Android kotlin перенос строки

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), которые позволяют автоматически создавать ссылки из текста.

Читайте также:  Как отредактировать файл hosts андроид

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

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

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

Атрибут 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 и вставьте текст.

Источник

Строки

Со строками в Kotlin работать стало проще.

Поздороваемся с котом по имени Барсик.

Обратите внимание, что мы добавили знак доллара к имени переменной и используем её прямо в строке. В Java нам пришлось бы разбивать строку и соединять её с помощью конкатенации.

Кстати, такой код тоже будет работать, но первый способ гораздо удобнее.

Мы понимаем, что речь идёт о строке, поэтому можно было написать код без указания типа.

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

Мы использовали так называемый «строковый шаблон». За кулисами происходит соединение при помощи StringBuilder, но более удобным и быстрым способом.

Длину строки можно вычислить через функцию count().

Функции-расширения

Разработчики JetBrains добавили множество готовых функций-расширений для многих классов, в том числе и для строк. Найти их можно в файле String.kt (в студии дважды нажмите клавишу Shift и в поисковой строке наберите имя данного файла для просмотра исходника).

Читайте также:  Усилитель gsm сигнала для андроид

Некоторые примеры функций-расширений представлены ниже. На самом деле их больше, изучайте самостоятельно.

Пробежаться по строке

Строку можно рассматривать как массив символов.

Пробежаться по всей строке без использования индекса.

Пробежаться по всей строки с использованием индекса.

Саму строку можно предварительно явно перевести в массив символов.

Можно вызывать forEach.

Если вам нужен не только символ строки, но и его индекс, то вызываем forEachIndexed.

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

Если вы укажете несуществующий индекс, то получите исключение StringIndexOutOfBoundsException, поэтому делайте проверку.

Рассмотрим пример с числами. Допустим нужно произвести арифметические действия с целыми числами и вывести результат в строке.

Снова используем знак доллара, а действия с числами поместили в фигурные скобки. Kotlin сама разберётся с типами данных и сделает всю работу.

Выведем второй элемент массива.

Опять используем знак доллара и фигурные скобки.

Можно даже использовать условие.

Многострочный текст можно создать, используя тройные кавычки. Больше нам не нужны символы перевода строки \n, а также символы типа \t, \b, \r и т.д.

Метод trimMargin() позволяет убрать «пустые» символы из текста по разделителю | (по умолчанию):

На выходе получим.

Можно задать свой собственный разделитель и указать его в методе.

Если первая и последняя строки длинного предложения пустые, то они будут удалены и строки.

Можем делать со строкой знакомые операции в удобной обёртке.

Конвертируем строку в число

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

Если нужно обработать ситуацию с null, то используйте другой метод.

По умолчанию мы подразумеваем десятичное счисление. Но возможна конвертация в другой системе счисления — двоичной, восьмеричной и т.д.

Также есть схожие методы toShort(), toShortOrNull(), toInt(), toIntOrNull(), toFloat(), toDouble() и т.д. Часть из них поддерживает перегруженные версии с другой системой счисления, но проверяйте поддерживаемые системы.

Не совсем про числа, но можно сконвертировать в булево значение.

Дополняем строку символами

Можно дополнить строку символами с самого начала или в конце.

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

Подстроки

Ещё пример для получения адреса сайта без http://.

Встроенные функции

Kotlin содержит множество встроенных удобных функций для работы со строками. Часть из них уже использовалась в примерах выше. Упомянем ещё несколько полезных функций.

Можно фильтровать данные с помощью filter(). Допустим, мы хотим извлечь только цифры из строки.

Если хочется решить обратную задачу и получить только символы, но не цифры — то достаточно вызвать filterNot().

replace()/replaceRange()

Для замены отдельных символов или строк используется функция replace(). Заменим отдельные символы в строке.

Можно менять подстроки.

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

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

Конвертируем строку в дату

Есть также вариант с использованием DateTimeFormatter.

StringBuilder

У класса StringBuilder в Kotlin есть отдельная функция buildString(), которая поможет сократить количество кода для получения строки.

Читайте также:  Синхронизация outlook с андроида

Источник

Строки в Kotlin — Изучаем тип string

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

Содержание статьи

Большинство языков программирования хранит текст в виде типа данных, который называется строкой, или string . Данный урок познакомит вас со строками, сначала давая базовую информацию о концепции строк, а затем показывая, как их использовать в Kotlin.

Как компьютер воспринимает строки

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

Это может показаться очень странным. Как символы могут быть числами? Компьютер умеет переводить символ на собственный язык. Он это делает, присваивая каждому символу другой номер. Это формирует двустороннее отображение символа в число, которое называется набором символов.

При нажатии клавиши символа на клавиатуре вы передаете компьютеру номер символа. Текстовый редактор преобразует число в изображение символа и показывает вам это изображение.

Unicode

Изолированно, компьютер может выбирать любое сопоставление набора символов, которое ему нравится. Если нужно, чтобы буква а была равна числу 10, пусть так и будет. Но когда компьютеры начинают общаться друг с другом, им необходимо использовать общий набор символов. Ведь при задействовании разных наборов символов возникает путаница, так как компьютеры рассматривают разные образцы символов.

На протяжении многих лет существовало несколько стандартов, но самым современным стандартом является Unicode. Он определяет отображение набора символов, которое сегодня используют почти все компьютеры.

На заметку: Подробнее об Unicode можете прочитать на официальном сайте.

В качестве примера рассмотрим слово cafe. Стандарт Unicode указывает, что буквы данного слова нужно представить следующим образом:

Число, связанное с каждым символом, называется кодовой точкой. В приведенном выше примере c использует кодовую точку 99, a использует кодовую точку 97 и так далее.

Конечно, Unicode предназначен не только для простых латинских символов, используемых в английском языке вроде c, a, f и e. Он также позволяет отображать символы других языков. Слово cafe происходит от французского, в котором оно пишется как café. Unicode отображает эти символы следующим образом:

Далее дан пример с использование китайских символов (Переводчик Google перевел символы как “Computer Programming”):

Вы наверняка не раз использовали смайлики, или эмодзи. По сути они являются символами, преобразованными с помощью Unicode. К примеру:

Это только два символа. Кодовыми точками данных символов являются довольно крупные числа, но каждое из них представляет собой только одну кодовую точку. Компьютер воспринимает такие смайлики точно так же, как и любые другие символы.

На заметку: Слово «эмодзи» происходит от японского, где «э» значит «картинка», а «модзи» значит «символ».

Char и String — Символы и строки в Kotlin

Kotlin, как и любой хороший язык программирования, может работать напрямую с символами и строками. Для этого используются типы Char и String . Далее мы подробно рассмотрим данные типы данных и то, как с ними работать.

Тип данных Char может хранить один символ, который должен быть обрамлен в одинарные кавычки . К примеру:

Источник

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