Урок 5. TextView. Часть вторая. Аттрибуты

Продолжаем с TextView. Да, материал я хотел опубликовать еще вчера, но не опубликовал.

4 урок:

Там мы указываем текст для TextView, разбираемся с strings.xml и способ создания локализованных strings.xml

В прошлый раз мы указали текст нашему View, притом сделали это разными способами. В этот раз предлагаю разобрать все остальные xml аттрибуты TextView, а так же рассмотреть их реализацию в коде.

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

Аттрибуты TextView

Сразу предупреждаю, что тут будут не буквально ВСЕ доступные аттрибуты для TextView, а только его собственные (а так же доступные его дочерним классам). А общие аттрибуты для всех View рассмотрю уже позже (сюда же отнесу и их размеры, положение относительно других элементов и т.д.).

Почему нам может быть интересен именно TextView? Ну, логичнее было бы начать таки с их общего родителя View, но и Text куда интереснее чем вы можете подумать. В Android он является родителем Button (кнопка) и EditText (поле ввода), а значит, что все указанные тут аттрибуты будут применимы к ним. Это справедливо для любого наследующего TextView класса.

android:enabled

Может иметь значения true или false. Влияет на активность виджета.

Неактивный view будет визуально отличаться от активного, а так же его нельзя будет взять в фокус или кликнуть на него.

enabled — false
enabled — true

При этом мы все так же можем изменить содержимое даже для неактивного TextView (setText в исходном коде).

android:textAppearance

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

К примеру. В файле styles.xml добавляем такой код:

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

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

Наш стиль работает как нужно!

И добавил кнопку для наглядности. Текст аналогичен.

Как я и говорил, кнопка наследник TextView, а потому имеет максимально много общего

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
serif
sans

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 на весь экран и указал своё положение текста.

Все варианты gravity указаны в правом окошке

android:autoLink + android:linksClickable

Тег android:autoLink может иметь значения none, all, map, phone, email, web. В зависимости от указанных параметров в тексте могут быть автоматически созданы ссылки вместо обычного текста. Это может быть номер телефона, электронная почта, карта или даже веб-ссылка. И при нажатии на которую будет выполнено соответствующее действие (номер телефона — откроет клавиатуру для вызова, а почта — ваш почтовый клиент).

А android:linksClickable, который может быть true или false, определяет, можно ли будет нажать на эти ссылки.

Так как значение linksClickable=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 указывает фиксированное число линий, остальные создают ограничения. Указывать целые числа.

Текст был больше, честно

Тень!

Тут будем краток и покажу все, что нужно одним примером. Думаю все и без лишних слов)

Хоть в редакторе ничего не изменилось — на устройстве результат еще как виден!

На этом пока все, есть еще теги, а потому чуть позже дополню.

Добавить комментарий