Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пери перевод.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
103.17 Кб
Скачать

Знакомство с менеджерами компоновки

Менеджер компоновки (более известный как разметка) — это расши-

рение класса ViewGroup, которое используется для позиционирования

дочерних элементов внутри пользовательского интерфейса. Экземпляры

разметки могут быть вложенными. Комбинируя их, вы можете создавать

сколь угодно сложные интерфейсы.

Android SDK включает некоторые простые виды разметки, которые могут

помочь конструировать пользовательские интерфейсы. Только от вас самих

зависит выбор правильного сочетания менеджеров компоновки, которые по-

могут сделать интерфейсы понятными и простыми в использовании.

Перечислим некоторые наиболее универсальные доступные классы раз-

метки.

• FrameLayout. Самый простой из менеджеров компоновки, прикрепля-

ет каждое дочернее Представление к верхнему левому углу экрана. Каж-

дый новый элемент накладывается на предыдущий, заслоняя его.

• LinearLayout. Помещает дочерние Представления в ряд (горизон-

тальный или вертикальный). Вертикальная разметка представляет

собой колонку с элементами, горизонтальная вытягивает их в стро-

ку. LinearLayout позволяет задавать ≪ширину≫ каждого дочернего

136 бет

Представления, благодаря чему можно контролировать их размеры

в пределах доступного пространства.

• RelativeLayout. Наиболее гибкий среди стандартных видов разметки,

позволяет задавать позицию каждого дочернего Представления отно-

сительного других элементов и границ экрана.

• TableLayout. Позволяет размещать Представления с помощью сетки,

состоящей из строк и столбцов. При этом столбцы могут либо авто-

матически растягиваться, либо оставаться постоянной ширины.

• Gallery. Отображает элементы в виде однострочного горизонтального

списка, который можно прокручивать.

В документации к Android подробно описаны возможности и свойства

каждого класса разметки, поэтому, чтобы не дублировать эту информацию,

я рекомендую вам посетить страницу http://developer.android.com/guide/topics/ui/

layout-objects.html.

Позже в этой главе вы также узнаете, как создавать составные элементы

управления (виджеты, состоящие из нескольких взаимодействующих Пред-

ставлений), расширяя приведенные выше классы разметки.

Использование разметки

Предпочтительный способ реализации разметки — использование XML-

файлов в качестве внешних ресурсов. Любой такой файл должен содержать

корневой элемент (узел), который, в свою очередь, может включать столько

вложенных экземпляров разметки и Представлений, сколько необходимо для

построения любых сложных интерфейсов.

В листинге 4.3 показана простая вертикальная разметка LinearLayout,

которая помещает TextView над элементом EditText.

Листинг 4.3. Простая разметка LinearLayout в формате XML

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Enter Text Below"

/>

<EditText

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Text Goes Here!"

/>

</LinearLayout>

137 бет

Обратите внимание, что для каждого элемента разметки вместо абсо-

лютных значений ширины и высоты в пикселах используются константы

wrap_content и fill_parent. Это обеспечивает мощный механизм,

благодаря которому экземпляры разметки не зависят от размера и раз-

решения экрана.

Константа wrap_content задает Представлению минимальный размер,

необходимый для отображения содержимого (например, высоту, которая

нужна для вывода многострочного текста). Константа fill_parent рас-

ширяет Представление, чтобы оно заполнило все доступное пространство

внутри родительского элемента (или экрана).

В листинге 4.3 разметка заполняет весь экран, тогда как оба текстовых

представления пытаются вытянуться во всю доступную ширину. Их высота

ограничена размерами, необходимыми для отображения текста.

Позже в этой главе вы научитесь устанавливать минимальные шири-

ну и высоту для собственных элементов управления, а также получите

дальнейшие рекомендации по разработке Представлений, не зависящих от

разрешения экрана.

Реализация разметки в виде XML-файлов ведет к отделению уровня

представления от логики, содержащейся в элементах управления и Активно-

стях. Это также позволяет создавать разновидности разметки, предназначен-

ные для конкретной аппаратной платформы, и загружать их динамически,

без изменений в коде программы.

При необходимости (или по желанию) вы можете реализовать разметку

в коде приложения. В таком случае, назначая Представления для разметки,

важно не забыть о параметрах LayoutParameters. Применить их можно с по-

мощью метода setLayoutParams или во время вызова addView, как показано

в листинге 4.4.

Листинг 4.4. Создание разметки LinearLayout в коде программы

LinearLayout ll = new LinearLayout(this);

ll.setOrientation(LinearLayout.VERTICAL);

TextView myTextView = new TextView(this);

EditText myEditText = new EditText(this);

myTextView.setText("Enter Text Below");

myEditText.setText("Text Goes Here!");

int lHeight = LinearLayout.LayoutParams.FILL_PARENT;

int lWidth = LinearLayout.LayoutParams.WRAP_CONTENT;

ll.addView(myTextView, new LinearLayout.LayoutParams(lHeight, lWidth));

ll.addView(myEditText, new LinearLayout.LayoutParams(lHeight, lWidth));

setContentView(ll);

138 бет