- TextView
- Программная установка текста
- Атрибуты
- Программная установка фона
- Реагируем на событие onClick
- Многострочный текст
- Увеличиваем интервалы между строками
- Бой с тенью
- Создание ссылок автоматом
- Совет: Используйте полупрозрачность с умом
- Выделить текст для копирования
- Android Lesson 16. TextView
- Изменение шрифта.
- Межстрочный интервал и цвет фона.
- Android studio свойства textview
- Задание текста программном коде
- Задание текста непосредственно в XML файле
- Задание текста в строковых ресурсах
- Вот еще одна возможность
- Выполнение лабораторной работы
- Урок 5. TextView. Часть вторая. Аттрибуты
- Аттрибуты TextView
- android:enabled
- android:textAppearance
- android:textColor
- android:textSize
- android:typeface
- android:textStyle
- android:textColorHighlight и android:textIsSelectable
- android:textColorHint + android:hint
- android:textColorLink
- android:ellipsize + android:singleLine
- android:gravity
- android:autoLink + android:linksClickable
- android:maxWidth, android:maxHeight и их min версии
- android:bufferType
- android:text
- android:textScaleX
- android:lines, android:lines, android:minLines
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 Lesson 16. TextView
TextView представляет собой обычную текстовую метку. Данный компонент однозначно является одним из самых часто используемых.
Основное свойство android:text. С помощью него можно указать отображаемый текст. Также это можно сделать и программно, методом setText().
Если вы в своем приложении используете текст. то для упрощения локализации в дальнейшем лучше использовать строковые ресурсы. Создайте в файле strings.xml строку с именем perfect_day.
Теперь к этому ресурсу можно обратиться из кода следующим образом:
Свойства textSize и textColor задают соответственно размер и цвет шрифта. А с помощью свойства textStyle можно сделать шрифт, например, жирным:
На панели выбора компонентов вы можете заметить четыре варианта TextView — Plain TextView, Small Text, Medium Text и Large Text. Отличие как раз и состоит в размере шрифта.
Изменение шрифта.
Допустим, вы хотите изменить шрифт для начертания символов на какой-то другой. Для этого можно использовать метод setTypeface():
Файл со шрифтом я поместил в директорию assets в дочернюю директорию fonts, которую я предварительно создал.
Межстрочный интервал и цвет фона.
Для изменение межстрочного интервала у TextView есть свойство:
Для изменения цвета фона воспользуемся свойством backgroundColor:
Источник
Android studio свойства textview
Текстовые поля в Android представлены двумя классами:
- TextView;
- EditText.
Виджет Textview предназначен для отображения текста без возможности редактирования его пользователем. Виджет поддерживает многострочное отображение, форматирование и автоматический перенос слов и символов.
Если необходимо редактирование текста, используется виджет EditText.
Классы Textview и EditText имеют множество атрибутов и методов, наследуемых от класса View, который рассмотрим позже.
Иерархия классов текстовых полей представлена ниже:
У элемента Textview есть многочисленные методы и ХМL-атрибуты для работы с текстом.
Вот основные ХМL-атрибуты, отображающие свойства элемента TextView:
1. Для задания текста в файле разметки используется атрибут
android:text
android:text=»УЦКО «Турбо»!»
2. Размер текста
android:textsize
При установке размера текста используются несколько единиц измерения:
- px (pixels) — пикселы;
- dp (density-independent pixels)— независимые от плотности пикселы. Это абстрактная единица измерения, основанная на физической плотности экрана;
- sp (scale-independent pixels)— независимые от масштабирования пикселы;
- in (inches) — дюймы, базируются на физических размерах экрана;
- pt (points) — 1/72 дюйма, базируются на физических размерах экрана;
- mm (millimeters) — миллиметры, также базируются на физических размерах экрана.
Обычно при установке размера текста используются единицы измерения sp, которые наиболее корректно отображают шрифты, например:
android:textSize=»48sp»;
android:textstyie
- normal;
- bold;
- italic.
Пример установки стиля через атрибуты:
android:textStyle=»bold»;
android:textcolor
Используются четыре формата в шестнадцатеричной кодировке:
- #RGB; (сокращенная запись)
- #ARGB;
- #RRGGBB;
- #AARRGGBB; (полная запись)
где R, G, B— соответствующий цвет, А— прозрачность (alpha-channel). Значение А, установленное в 0, означает прозрачность 100%. Значение по умолчанию, без указания значения alpha, — непрозрачно.
Например, #f00 или #F00 – это сокращенная запись (между строчными и прописными разницы нет), ff или FF – соответствует десятичному значению 255, поэтому запись #000000ff в соответствии с форматом #AARRGGBB трактуется так:
что соответствует записи в более привычном формате для многих языков программирования: ARGB(0,0,0,255) — работает синяя пушка.
А вот пример определения цвета в XML файле.
Задать текст для Textview можно в трех местах:
- в программном коде
- непосредственно в XML файле
- в строковых ресурсах – рекомендуемый способ
Задание текста программном коде
В файле разметки должен быть размещен элемент TextView, например, с далее в программном коде текст задается методом setText():
Задание текста непосредственно в XML файле
Тест сразу отображается в файле разметки. Пример:
wrap_content — элемент имеет размер по своему содержимому
Задание текста в строковых ресурсах
В файле ресурсов strings.xml задаем текст, например, «Hello, Android!» и имя этому ресурсу name=»hello_android”. Вот пример:
Файл strings.xml
Далее, в файле разметки activity_main.xml, указываем ссылку на строковый ресурс
Файл activity_main.xml
Вот еще одна возможность
Если текст задан в строковых ресурсах, но не задан в файле разметки, то его можно задать коде программы используя метод setText(), который устанавливает текст, через ссылку на идентификатор ресурса, определенного в файле R.java (автоматически сгенерированным средой разработки), например:
Выполнение лабораторной работы
Создайте приложение MyTextView по образцу:
Удалите строковый ресурс “hello_world”, созданный по умолчанию
Требуемый текст задайте в следующих местах:
УЦКО «Турбо»! — в файле разметки
Лабораторная работа № 2 — в строковых ресурсах
Copyright (C) 2013 Turbo – в коде программы
Стиль, размер, цвет текста задается в файле разметки при описании виджета Textview, например:
Источник
Урок 5. TextView. Часть вторая. Аттрибуты
Продолжаем с TextView. Да, материал я хотел опубликовать еще вчера, но не опубликовал.
В прошлый раз мы указали текст нашему View, притом сделали это разными способами. В этот раз предлагаю разобрать все остальные xml аттрибуты TextView, а так же рассмотреть их реализацию в коде.
Дополнительно можете ознакомиться с официальной документацией от Google вот тут.
Аттрибуты TextView
Сразу предупреждаю, что тут будут не буквально ВСЕ доступные аттрибуты для TextView, а только его собственные (а так же доступные его дочерним классам). А общие аттрибуты для всех View рассмотрю уже позже (сюда же отнесу и их размеры, положение относительно других элементов и т.д.).
Почему нам может быть интересен именно TextView? Ну, логичнее было бы начать таки с их общего родителя View, но и Text куда интереснее чем вы можете подумать. В Android он является родителем Button (кнопка) и EditText (поле ввода), а значит, что все указанные тут аттрибуты будут применимы к ним. Это справедливо для любого наследующего TextView класса.
android:enabled
Может иметь значения true или false. Влияет на активность виджета.
Неактивный view будет визуально отличаться от активного, а так же его нельзя будет взять в фокус или кликнуть на него.
При этом мы все так же можем изменить содержимое даже для неактивного TextView (setText в исходном коде).
android:textAppearance
Данный аттрибут позволяет указать ссылку на специальный ресурс стилей текста. Удобно, когда нужно изменить только отображаемый текст в кнопке не затрагивая при этом ничего другого.
К примеру. В файле styles.xml добавляем такой код:
Тут я взял красный цвет из ресурсов андроида (но лучше использовать свои, так как некоторые ресурсы в модифицированных системах могут просто-напросто отсутствовать). А так же изменил размер текста.
И указываю свой стиль данному аттрибуту. Результат должен быть отрисован сразу.
И добавил кнопку для наглядности. Текст аналогичен.
android:textColor
Был в примере выше. Принимает ресурс цвета. Это может быть как отдельный xml ресурс, так и color вроде тех, что в файле colors.xml, а так же можно указать непосредственно сам цвет в виде: « #rgb «, « #argb «, « #rrggbb «, или « #aarrggbb «. Используется схема альфа(прозрачность) — красный — зеленый — синий.
android:textSize
Так же был показан выше. Отвечает за размер текста в конкретном TextView. Размер указываем в величине sp. Описание взял из ответа на стаке:
Scale-independent Pixel — пиксель, не зависящий от масштабирования — зависит от плотности экрана, но результат будет масштабироваться в соответствии с настройками размера шрифта пользователя. Рекомендуется для задания размеров шрифтов, чтобы текст подстраивался как под плотность экрана, так и под настройки, заданные пользователем.
android:typeface
Меняет используемый шрифт у TextView. Может иметь такие значения: normal, sans, serif, monospace. Где стандартный это нормальный, а остальные немного отличаются визуально. Свои шрифты можно указать при помощи другого тега или в исходном коде.
monospace
android:textStyle
На деле действует подобно android:textAppearance, но, в отличие от него может действовать не только на текст, а и на остальные аттрибуты.
android:textColorHighlight и android:textIsSelectable
android:textColorHighlight позволяет изменить цвет выделяемого текста, а android:textIsSelectable со значением true позволяет выделять обычный текст в TextView (чего изначально делать нельзя).
Код такой
Результат уже запущенного приложения:
android:textColorHint + android:hint
Цвет подсказки и сама подсказка соответственно. Цвет, как обычно, ресурс или HEX, а hint — это текст или ресурс строка.
Подсказка будет отображаться тогда, когда у нас не выведен никакой текст. Если вы не меняли цвет, то она будет светло-серого цвета.
Вообще это имеет большую пользу для полей ввода (EditText). Вы точно с такими сталкивались и не раз.
android:textColorLink
Текст может содержать ссылки. Они имеют свой особый цвет, а мы его можем изменить. Цвет, как и обычно: ресурс или HEX.
android:ellipsize + android:singleLine
Английские названия говорят за себя. Многоточие и одна линия. Последнее принимает логические значения true или false. Это и определяет, будет ли у нашего TextView одна строка или много.
Многоточие может иметь значения: end, marquee, middle, none, start. Очевидно, что изначально никакого многоточия нет, так что дефолтное это none. marquee нужно для создания автоматической прокрутки длинного текста, немного позже я покажу как, но нужны еще теги. А end, middle, start соответствуем названиям и выводит многоточие в конце, середине или начале строки.
А середину мы выбросили…
android:gravity
Определяет положение текста внутри TextView. В примере я развернул свой TextView на весь экран и указал своё положение текста.
android:autoLink + android:linksClickable
Тег android:autoLink может иметь значения none, all, map, phone, email, web. В зависимости от указанных параметров в тексте могут быть автоматически созданы ссылки вместо обычного текста. Это может быть номер телефона, электронная почта, карта или даже веб-ссылка. И при нажатии на которую будет выполнено соответствующее действие (номер телефона — откроет клавиатуру для вызова, а почта — ваш почтовый клиент).
А android:linksClickable, который может быть true или false, определяет, можно ли будет нажать на эти ссылки.
android:maxWidth, android:maxHeight и их min версии
Понятно, что этими тегами можно указать максимально и минимально допустимые значения высоты и ширины в пикселях (вернее dp (density-independent pixels)) для TextView.
Хоть и ширина указана по контенту, но есть ограничение по максимальной ширине
android:bufferType
Определяет тип возвращаемого значения для функции getText(). По умолчанию имеет значение normal. Так же есть вариант spannable и editable. Возвращают соответственно Spannable и Editable + Spannable, тогда как тип normal зависит от типа заданного текста.
android:text
Уже знакомый нам тег, с его помощью мы указываем текст нашему TextView.
android:textScaleX
Позволяет указать множитель ширины текста. Принимает значения с плавающей запятой.
android:lines, android:lines, android:minLines
Позволяют управлять количеством отображаемых строк в TextView. lines указывает фиксированное число линий, остальные создают ограничения. Указывать целые числа.
Тут будем краток и покажу все, что нужно одним примером. Думаю все и без лишних слов)
На этом пока все, есть еще теги, а потому чуть позже дополню.
Источник