Layouts в Android

| 11.04.2014

Layout определяет внешний вид экрана (а также виджета), его структуру и отдельные компоненты. Когда мы создаем визуальный интерфейс в приложении, то мы как раз работаем с Layouts.

Существует два основных способа создания Layout:
1. Описание в xml-файле
2. Программный способ создания Layout (так сказать, «на лету»)

Рассмотрим пример создания Layout с помощью xml. Допустим, нам необходимо создать экран (активити), которое будет отображать одну кнопку и один текстовый элемент TextView. В формате xml это выглядело бы так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Здесь какой-то текст" />
    <Button android:id="@+id/my_button"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Это кнопка" />
</LinearLayout>

Как видим, в структуре имеется строка, сообщающая, что это xml версии 1.0. Далее идет группа из двух элементов TextView и Button, помещенных внутрь тега LinearLayout. LinearLayout — это один из видов Layouts (о видах немного позже).

Каждый из упомянутых компонентов имеет атрибуты, задающие определенные свойства (все они начинаются со слова «android:»). Например, атрибут

1
android:id="@+id/my_button"

задает уникальный идентификатор «my_button». Благодаря этому идентификатору в дальнейшем в коде мы можем обращаться к нужному элементу по его id. Символ «@» дает понять xml-парсеру, что этот атрибут нужно идентифицировать как ID-ресурс. Значок «+» означает, что это новый ресурс и его необходимо добавить при компиляции в файл ресурсов R.java.

Для обращения к элементу в коде по ID можно воспользоваться такой строчкой:

1
Button myButton = (Button) findViewById(R.id.my_button);

Также мы используем несколько других атрибутов. В частности, layout_width определяет ширину элемента, а layout_height — его высоту. Значение «wrap_content» означает, что размеры должны соответствовать внутреннему содержимому, то есть в нашем случае — тексту внутри кнопки или элемента TextView.

Готовый файл разметки помещается в директорию res/layout/.

В процессе компиляции этот файл будет скомпилирован в ресурс View. Чтобы отобразить данный layout мы должны в нашем активити в методе onCreate() вызвать метод setContentView(), передав ему в качестве параметра имя (идентификатор) ресурса layout. Например, если мы сохраним xml-файл как main.xml, то вызвать его мы можем следующим образом:

1
setContentView(R.layout.main)

Полное содержимое файла MainActivity.java:

1
2
3
4
5
6
7
8
9
10
11
12
package ru.android.layout;
 
import android.os.Bundle;
import android.app.Activity;
 
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    } 
}

Запустив наше приложение мы получим такой вид экрана:

Layouts в Android

Существует несколько видов Layout:

Linear Layout
Relative Layout
Web View
List View
Grid View
Table Layout

Мы поговорим о каждом более подробно по отдельности.

Автор: prostatitusnet.ru

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*