Ресурсы компоновки

Ресурсы компоновки

В 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 не существует, он будет создан. Ниже мы еще поговорим об этом синтаксисе.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

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