- TextView
- Программная установка текста
- Атрибуты
- Программная установка фона
- Реагируем на событие onClick
- Многострочный текст
- Увеличиваем интервалы между строками
- Бой с тенью
- Создание ссылок автоматом
- Совет: Используйте полупрозрачность с умом
- Выделить текст для копирования
- Сложение двух чисел в Android Studio на Java (Android приложение)
- Статьи из цикла
- Приготовления
- Создание проекта
- Размещение компонентов
- Соединение компонентов с Java кодом
- Первый способ обработки клика кнопки
- Запуск приложения
- Второй способ обработки клика кнопки
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), то запустится звонилка.
У ссылки есть интересная особенность — при длительном нажатии на ссылку появляется диалоговое окно, позволяющее скопировать ссылку в буфер обмена.
Атрибут 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 Studio на Java (Android приложение)
Статьи из цикла
В статье рассказывается как создать приложения сложения двух чисел в Android Studio для Android.
Приготовления
В статье Установка Android Studio в Windows узнаете, как установить и настроить Android Studio.
Создание проекта
Перейдем вначале к файлу activity_main.xml , который отвечает за разметку внешнего вида приложения:
В Android Studio 4 изменили размещение переключателя дизайна и кода разметки экрана:
Размещение компонентов
По умолчанию в Android Studio в качестве разметки используется контейнер ConstraintLayout . Для новичков он не совсем простой. Поменяем на обычный LinearLayout .
Перейдем в текстовой режим разметки XML файла. Там мы внутри контейнера ConstraintLayout видим элемент TextView с фразой Hello, World! :
И заменим содержимое всего файла на следующий код:
В Android Studio 4 изменили размещение переключателя дизайна и кода разметки экрана:
Перейдем обратно в режим дизайна:
Перетащим текстовое поле:
Включим отображение атрибутов компонентов:
Обратим внимание на то, что поле имеет имя ( id ) editText :
Поменяем начальный текст в поле ввода на какое-нибудь число:
Перетащим еще одно текстовое поле, которое будет иметь имя editText2 :
Также поменяем начальный текст в поле ввода на какое-нибудь число:
Поменяем текст на кнопки, например, на Сложить :
Перетащим поле с текстом для вывода:
Начальный текст поменяем, например, на = :
Начальный размер шрифта в TextView маленький, так что увеличим его. За это отвечает свойство textSize , которое можно найти либо в списке всех атрибутов, либо через поиск:
В текстовом варианте получившаяся разметка будет такой:
Да, можно было не перетаскивать компоненты в визуальном режиме, а вручную написать этот код в текстовом режиме.
Соединение компонентов с Java кодом
Перейдите в окно редактирования кода главной активности:
Добавьте в класс три переменных, отвечающих за два текстовых поля ввода и одно текстовое поля вывода:
Видите, что в этих строчках есть красные слова (что означает наличие ошибки). Это от того, что не подключены библиотеки для этих типов данных. Курсор (каретку) щелкните по слову EditText , и нажмите Alt + Enter . И там выберите Import class :
Также сделайте с TextView :
В методе onCreate соедините созданные переменные с теми полями, что объявлены в разметке.
Внимание! Добавлять эти строчки нужно после setContentView:
Обратите внимание, что значение id компонентов совпадают с id компонентов из XML файлов. То что названия Java переменных совпадают — это только для удобства:
Теперь надо прописать код обработки клика кнопки, чтобы при её нажатии считывались числа, складывались и сумма выводилась в TextView. Будет рассмотрено два способа.
Первый способ обработки клика кнопки
Добавим в класс активности новый метод, например, с названием clickButton :
И через Alt + Enter убираем красноту:
В метод него добавим код обработки клика кнопки:
Полный код файла MainActivity.java у меня выглядит так:
Обратите внимание на то, что, если вы проект в самом начале назвали по-другому (у меня он называется Add2num ), то первая строчка с package у вас будет другой. И если вы бездумно скопируете строчку package com . example . add2num ; в ваш проект, который называется по-другому, то у вас программа не соберется и не запустится!
Мы почти закончили, но мы нигде не прописали, что метод clickButton должен срабатывать при клике на кнопку. Исправим это.
Перейдем в XML файл разметки, в котором мы уже работали. И в нем в компоненте Button добавим строчку:
Полный код файла activity_main.xml :
Запуск приложения
Если вы используете не физическое устройство, а эмулятор, то всегда рекомендую вначале запустить эмулятор, а потом уже запускать приложение:
Теперь можем запускать наш проект:
Введем какие-нибудь числа и нажмем кнопку:
Второй способ обработки клика кнопки
Теперь реализуем второй способ обработки клика, который я рекомендую использовать вместо первого. А чем плох первый? Мы в XML файле прописали, как называется метод из Java кода, который нужно запускать, то есть смешали код реализации и код разметки между собой. Это не очень хорошо. Попробуем не вносить изменения в XML файл.
Добавим еще одну переменную для связки кнопки из XML файла с Java кодом. Красноту помните, как убирать:
Также пропишите этот код:
А теперь напишем обработчик клика кнопки через OnClickListener . Пропишите такой код:
Внимание! Обратите внимание, что в первом способе код обработки кнопки clickButton мы писали вне метода onCreate , а сейчас пишем внутри метода onCreate :
Пропишем реализацию метода:
Полный код файла MainActivity.java :
Файл Полный код файла MainActivity.java остался без изменений (строчки android:onClick=»clickButton» тут нет):
При запуске мы получим такое же по функциональности приложение, как и при первом способе:
- Android Studio icon.svg by Google Inc. / (2019-06-07)
- Android Studio
- Android
- Java
- Сложение двух чисел
В статье рассказывается как создать приложения сложения двух чисел в Android Studio для Android.
В статье рассказывается как создать приложения сложения двух чисел в Android Studio для Android.
Источник