Ресурсы компоновки
В Android представление для экрана часто загружается из XML-файла в виде ресурса. Это очень похоже на HTML-файл, описывающий контент и компоновку веб-страницы. Такие XML-файлы называются ресурсами компоновки. Ресурс компоновки (layout resource) — один из наиболее важных ресурсов, используемых в программировании пользовательских интерфейсов Android. Рассмотрим фрагмент кода из листинга 3.4 для примера активности Android.
Строка setContentView(R.layout.main) указывает, что существует статический класс по имени R.layout, а в этом классе имеется (целочисленная) константа main, указывающая на экземпляр View, который определен в XML-файле ресурса компоновки. Именем этого файла является main.xml, и его необходимо поместить в подкаталог layout каталога ресурсов. Другими словами, этот оператор ожидает, что программист создал файл /res/layout/main.xml и поместил в него необходимое определение компоновки. Содержимое файла компоновки main.xml может выглядеть примерно так, как показано в листинге 3.5.
Листинг 3.5. Пример файла компоновки main.xml
>?xml version="1.0" encoding="utf-8"?<
>LinearLayout xmlns:android="schemas.android.com/apk/res/android" android:orientation="vertical" android:layout width="fill parent" android:layout height="fill parent"
<
>TextView android:id="@+id/text1"
android:layout width="fill parent" android:layout height="wrap content" android:text="@string/hello"
/<
>Button android:id="@+id/b1"
android:layout width="fill parent" android:layout height="wrap content" android:text="@string/hello"
/<
>/LinearLayout<
В файле компоновки из листинга 3.5 определен корневой узел LinearLayout, содержащий элемент TextView, а за ним Button. Элемент LinearLayout располагает свои дочерние узлы вертикально или горизонтально — в этом примере вертикально.
Для каждого экрана (или активности) необходимо определить отдельный файл компоновки. Точнее, каждая компоновка нуждается в специально выделенном файле. При подготовке двух экранов, вероятно, понадобятся два файла компоновки, например, /res/layout/screen1_layout.xml и /res/layout/screen2_layout.xml.
На заметку! Каждый файл из подкаталога /гез/1ауои-Ь/ генерирует уникальную константу на основе имени файла (вместе с расширением). В случае компоновок важно количество файлов, а для строковых ресурсов — количество индивидуальных строковых ресурсов внутри файлов.
Например, при наличии в каталоге /res/layout/ двух файлов filel.xml и file2.xml в файле R.java появятся элементы, показанные в листинге 3.6.
Листинг 3.6. Множество констант для нескольких файлов компоновки
public static final class layout {
… любые другие файлы
public static final int file1=0x7f030000; public static final int file2=0x7f030001;
}
Определенные в этих файлах компоновки представления, такие как TextView (см. листинг 3.5), доступны в Java-коде через их идентификаторы ресурсов, сгенерированные в R.java:
TextView tv = (TextView)this.findViewByld(R.id.textl);
tv.setText("Try this text instead");
В этом примере TextView находится с помощью метода findViewByld из класса Activity. Константа R.id.textl соответствует идентификатору, определенному для TextView. Атрибут id для TextView в файле компоновки выглядит так:
>TextView android:id="@+id/text1"
>/TextView<
Значение атрибута id определяет, что константа textl предназначена для уникальной идентификации этого представления среди других представлений, имеющихся в данной активности. Знак плюс (+) в строке @+id/text1 означает, что если идентификатор textl не существует, он будет создан. Ниже мы еще поговорим об этом синтаксисе.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.