Android TextView

Знаходиться у розділі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не підтримуються.

android

Програмний еквівалент - методpublic void setShadowLayer (float radius, float dx, float dy, int color):

Створення посилань автоматично

УTextViewє ще дві цікаві властивостіAuto link(атрибутautoLink) іLinks clickable(атрибутlinksClickable) , які дозволяють автоматично створювати посилання з тексту.

Виглядає це в такий спосіб. Припустимо, ми привласнимоелементуTextViewтекстМій сайт: developer.alexanderklimov.ruі застосуємо до нього зазначені властивості.

Посилання має цікаву особливість - при тривалому натисканні на посилання з'являється діалогове вікно, що дозволяє скопіювати посилання в буфер обміну.

Колір посилання можна змінити через властивістьText color link(XML-атрибутtextColorLink), а програмно через методsetTextLinkColor().

Програмно можна встановити посилання на текст через класLinkify:

текст

У таких випадках доведеться самостійно додати посилання до текстів. Наприклад, визначимо посилання на ресурсі:

Порада: Використовуйте напівпрозорість з розумом

Якщо вам потрібно встановити текст напівпрозорим, не використовуйте атрибутandroid:alpha:

Справа в тому, що такий підхід витрачає багато ресурсів під час перемальовування.

АтрибутtextColorдозволяє встановити напівпрозорість без втрати продуктивності:

Виділити текст для копіювання

За промовчанням текст дляTextViewне можна виділити для копіювання. Але в API 11 з'явилася така можливість, яка може стати в нагоді. Виконується або за допомогою XML-атрибутаandroid:textIsSelectable, або через методsetTextIsSelectable().

Додайте в розмітку два компонентиTextViewта одне текстове полеEditTextдля вставки скопійованого тексту. У першій текстовій мітці встановимо можливість виділення тексту декларативно.

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

Зробіть довгий тап на тексті у будь-якомуTextView. Побачте стандартні повзунки, щоб вибрати довжину тексту. Скопіюйте текст, зробіть довгий тап уEditTextта вставте текст.