1 декабря 2014 г.

RelativeLayout

RelativeLayout (относительная разметка) позволяет дочерним представлениям определять свою позицию относительно родительского представления или относительно соседних дочерних элементов (по идентификатору элемента).

В RelativeLayout дочерние элементы расположены так, что если первый элемент расположен по центру экрана, другие элементы, выровненные относительно первого элемента, будут выровнены относительно центра экрана. При таком расположении, при объявлении разметки в XMLфайле, элемент, на который будут ссылаться для позиционирования другие объекты представления, должен быть объявлен раньше, чем другие элементы, которые обращаются к нему по его идентификатору.

Если в коде мы не работаем с некоторыми элементами разметки, создавать идентификаторы для них не обязательно, однако определение идентификаторов для объектов важно при использовании RelativeLayout, так как в ней расположение элемента может определяться относительно другого элемента, на который ссылаются через его уникальный идентификатор:

android:layout_toLeftOf="@id/button_right"

Где @id/button_right – это идентификатор другого элемента.

Рассмотрим пример:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_height="fill_parent"
 android:layout_width="fill_parent">
 
 <Button
  android:id="@+id/button_center"
  android:text="Center"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerVertical="true"
  android:layout_centerInParent="true"/>
 <Button
  android:id="@+id/button_bottom"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Bottom"
  android:layout_centerHorizontal="true"
  android:layout_alignParentBottom="true"/>
 <Button
  android:id="@+id/button_top"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Top"
  android:layout_alignParentTop="true"
  android:layout_centerHorizontal="true"/>
 <Button
  android:id="@+id/button_left"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Left"
  android:layout_alignParentLeft="true"
  android:layout_centerVertical="true"/>
 <Button
  android:id="@+id/button_right"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Right"
  android:layout_alignParentRight="true"
  android:layout_centerVertical="true"/>
 <Button
  android:id="@+id/button_rel_right"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_toLeftOf="@id/button_right"
  android:layout_alignTop="@id/button_right"
  android:text="RelRight"/>
 <Button
  android:id="@+id/button_rel_left"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_toRightOf="@id/button_left"
  android:layout_alignTop="@id/button_left"
  android:text="RelLeft"/>
  
</RelativeLayout>

В данном коде первые пять кнопки позиционируются относительно родительского элемента RelativeLayout. Это кнопки Center, Top, Bottom, Left и Right. Они позиционируются ссылаясь на родительский элемент.

Кнопка RelLeft позиционируется относительно кнопки Left (строки 52, 53). Эти кнопки позиционируются ссылаясь на id элемента, относительно которого позиционируются. Кнопка RelRight позиционируется относительно кнопки Right (строки 45, 46).

Ну и посмотрим как это выглядит при запуске:

L0010

Комментариев нет:

Отправить комментарий