Главная
›
Новости
Программирование для Android
Опубликовано: 31.10.2017
Разработка Android приложений. Урок 2 - Первое приложение.Элемент
TextView — самый простой и в то же время один из самых используемых в приложениях элементов.
TextView служит для отображения текста без возможности его редактирования.
Кроме того, элемент
TextView используется как элемент для отображения данных в контейнерных элементах-списках. От класса
TextView наследуется множество других элементов: кнопки, флажки и переключатели — элементы управления, на которых может быть отображен текст. В будущих уроках, мы будем активно применять этот элемент для отображения состояния элементов при обработке событий.
Уроки Андроид программирования | #1 - Введение в Java Android
Элемент
TextView , так же как и объект
View , от которого он наследуется, поддерживает собственное разнообразие XML-атрибутов. Некоторые атрибуты являются определенными только в объекте TextView, но эти атрибуты могут также наследоваться любыми объектами, которые расширяют этот класс.
Android Studio Уроки Для Начинающих | Урок 1 | Создание Программы На Андроид
Свойства для элемента
TextView можно задавать как в файле компоновки, так и в программном коде. Например, для отображения текста в
TextView в файле компоновки используется атрибут android:text, а в программном коде вызывается метод setText() этого класса.
В целом, XML-словарь элементов пользовательского интерфейса близок к структуре классов и методов этих элементов, где имя элемента соответствует имени класса, а атрибуты элемента — методам этого класса. Фактически, соответствие является часто настолько точным, что легко предположить без обращения к документации Android, какой XML-атрибут передает метод класса или, наоборот, какой метод класса соответствует конкретному XML-элементу. В таблице приведены для примера несколько свойств элемента
TextView , чтобы вы могли оценить точность соответствия XML-атрибутов и методов класса
TextView .
Соответствие XML-атрибутов и методов в классах представлений
Имя XML-атрибута |
Соответствующий метод в классе Java |
android:text |
setText() |
android:textColor |
setTextColor() |
android:textSize |
setTextSize() |
android:textColorHighlight |
setHighlightColor() |
Однако обратите внимание на последнюю строку в таблице: не всегда XML-словарь идентичен структуре java-классов.
Некоторые атрибуты элемента
TextView являются общими по отношению ко всем объектам View, потому что они унаследованы от корневого класса View. Такими атрибутами являются, например, id, layout_width, layout_height, с которыми вы уже познакомились в
главе 4.
Если в программном коде мы работаем с данным элементом пользовательского интерфейса, в файле компоновки обязательно определяют идентификатор, например:
android:id= "@+id/text1"
где символ @ в начале строки указывает, что синтаксический анализатор XML должен проанализировать и развернуть остальную часть строки идентификатора и определить это выражение как ресурс идентификатора. Символ + означает, что это новое имя ресурса, которое должно быть создано и добавлено к нашим ресурсам в файл R.java, автоматически генерируемый средой Android для проекта.
Требование к уникальности идентификаторов не распространяется на все дерево элементов, но они должны быть уникальны в пределах части дерева (которая нередко может быть и полным деревом, так что лучше создавать совершенно уникальные идентификаторы, если это возможно).
Если планируется создание приложения с многоязыковой поддержкой пользовательского интерфейса, вместо непосредственного задания текста в XML-компоновке или в коде программы необходимо создать ссылку на текстовый XML-ресурс:
android:text="@string/text_hello"
где
text_hello — имя ресурса.
В коде программы ссылка на XML-ресурс задается методом setText(), который принимает ссылку на идентификатор ресурса, определенного в файле R.java (автоматически сгенерированном средой разработки), например:
final TextView text = (TextView)findViewById(R.id.text4);
text4.setText(R.string.text_hello);
У элемента TextView есть многочисленные методы и XML-атрибуты для работы с текстом. Например, основные XML-атрибуты, отображающие свойства элемента TextView:
android:textSize;
android:textStyle;
android:textColor.
Атрибут 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:textStyle представляет стиль текста (нормальный, полужирный, наклонный). Для задания стиля текста используются только следующие константы:
Вот пример установки стиля через атрибуты в файле компоновки:
android:textStyle="bold";
Атрибут
android:textColor задает цвет текста. Для задания цвета используются четыре формата в шестнадцатеричной кодировке:
#RGB;
#ARGB;
#RRGGBB;
#AARRGGBB,
где R, G, B — соответствующий цвет, А — альфа-канал (alpha-channel), который определяет прозрачность. Значение A, установленное в 0, означает прозрачность 100%. Значение по умолчанию без указания значения A равно 1, т. е. непрозрачно.
Для всех перечисленных ранее атрибутов в классе
TextView есть соответствующие методы для чтения или задания соответствующих свойств.
Сейчас мы создадим простое приложение с элементом
TextView , в котором рассмотрим различные способы задания его свойств — через атрибуты в файле компоновки и программно, в коде класса, реализующего окно приложения. Для этого создайте новый проект. Для файла компоновки в уроках будет имя main.xml, так, на мой взгляд, удобнее main.xml, а ему соответствует java-класс MainActivity но, если хотите используйте имя по умолчанию — activity_main.xml). Откройте файл компоновки добавьте компоновку
LinearLayout и в ней четыре элемента
TextView с идентификаторами text1, text2, text3, text4.
Для text1 задайте текст непосредственно в XML-коде. Для элемента text2 текст задайте через ссылку на строковый ресурс. Можно также задать различный размер, цвет и стиль форматирования текста для элементов text3 и text4. Полный код файла компоновки:
<? xml version= "1.0" encoding= "utf-8" ?>
< LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "fill_parent" android:layout_height= "fill_parent" android:orientation= "vertical" >
< TextView android:id= "@+id/text1" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "Text from res/layout/main.xml" />
< TextView android:id= "@+id/text2" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "@string/text_hello" android:textStyle= "bold" />
< TextView android:id= "@+id/text3" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:textSize= "24sp" android:textStyle= "bold" android:textColor= "#ABABAB" />
< TextView android:id= "@+id/text4" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:textSize= "36sp" android:textStyle= "italic" />
</ LinearLayout >
В файле ресурсов strings.xml добавьте после ресурса app_name новый строковый ресурс "Hello, Android!" (листинг 2).
<? xml version= "1.0" encoding= "utf-8" ?>
< resources >
< string name= "app_name" >TextView Sample</ string >
< string name= "text_hello" >Text from res/values/string.xml</ string >
< string name= "action_settings" >Settings</ string >
</ resources >
В классе
MainActivity инициализируйте
TextView -объекты text3, text4 и методом setText() задайте для них текст. Полный код класса окна приложения:
package com.example.textview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView text3 = (TextView)findViewById(R.id.text3);
text3.setText( "Text from Activity" );
final TextView text4 = (TextView)findViewById(R.id.text4);
text4.setText(R.string.text_hello);
}
}
Результат должен получиться такой, как на рисунке. Для первого поля текст задается прямо в файле компоновки, для второго — в файле компоновки из строковых ресурсов strings.xml, для третьего — в коде, для четвертого поля — читается в java-коде из файла ресурсов.
Приложение с элементами TextView
В следующем уроке мы рассмотрим работу с элементом
ImageView .