Продолжаем с TextView. Да, материал я хотел опубликовать еще вчера, но не опубликовал.
4 урок:
В прошлый раз мы указали текст нашему 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 добавляем такой код:
1 2 3 4 |
<style name="TextAppearance.TestApp" parent="TextAppearance.AppCompat"> <item name="android:textColor">@android:color/holo_red_dark</item> <item name="android:textSize">30sp</item> </style> |
Тут я взял красный цвет из ресурсов андроида (но лучше использовать свои, так как некоторые ресурсы в модифицированных системах могут просто-напросто отсутствовать). А так же изменил размер текста.
И указываю свой стиль данному аттрибуту. Результат должен быть отрисован сразу.
И добавил кнопку для наглядности. Текст аналогичен.
android:textColor
Был в примере выше. Принимает ресурс цвета. Это может быть как отдельный xml ресурс, так и color вроде тех, что в файле colors.xml, а так же можно указать непосредственно сам цвет в виде: «#rgb
«, «#argb
«, «#rrggbb
«, или «#aarrggbb
«. Используется схема альфа(прозрачность) — красный — зеленый — синий.
android:textSize
Так же был показан выше. Отвечает за размер текста в конкретном TextView. Размер указываем в величине sp. Описание взял из ответа на стаке:
Scale-independent Pixel — пиксель, не зависящий от масштабирования — зависит от плотности экрана, но результат будет масштабироваться в соответствии с настройками размера шрифта пользователя. Рекомендуется для задания размеров шрифтов, чтобы текст подстраивался как под плотность экрана, так и под настройки, заданные пользователем.
android:typeface
Меняет используемый шрифт у TextView. Может иметь такие значения: normal, sans, serif, 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 указывает фиксированное число линий, остальные создают ограничения. Указывать целые числа.
Тень!
Тут будем краток и покажу все, что нужно одним примером. Думаю все и без лишних слов)
На этом пока все, есть еще теги, а потому чуть позже дополню.