Extjs布局類(一)
在Ext中,所有的布局類都是從Ext.Container開始的,Container的父類是BoxComponent。
Ext.BoxComponent是一個盒子組件,可以定義高度、寬度、位置等屬性。作為子類的Container繼承了父類的功能,更重要的是,他可以通過layout和item屬性為內(nèi)部的子控件進行布局。
圖1、Container和他的子類繼承圖
所以,只要是Container的子類,我們都可以通過Layout對內(nèi)部的item進行布局。
圖2、布局類型繼承圖。
與Ext.Container類似,所有的布局類也有一個共同的超類Ext.layout.ContainerLayout。凡是繼承該類的子類都可以對Container和他的子類進行布局定義,這兩棵繼承樹結(jié)合在一起就構(gòu)成了Ext完整的布局系統(tǒng)。
常用的布局方式:
1、BorderLayout,邊界布局,將頁面分成東西南北中,五個部分。使用region來指定具體的存放位置。
2、FitLayout,自動填充整個空間。
3、FromLayout,表單專用布局。
4、ColumnLayout,分列布局。
5、AbsoluteLayout,絕對位置布局。
6、Accordion,折疊布局。
7、AnchorLayout,錨點布局。
8、Cardlayout,卡片布局。
9、ContainerLayout,容器布局
10、TableLayout,表格布局。
一、FitLayout(全填充布局)

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

panel填充了整個頁面,并且它的自身會隨著頁面大小而變化。
注意點
(1)使用了FitLayout布局的組件,items只能放一個子組件。如果放置了多個,那也只有第一個顯示。
修改一下代碼

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

可以看到,在panel前加了一個,所以panel失效了。最后看的只是第一個頁面,顯示head。
(2)在item中使用Grid千萬不要使用autoHeight:true參數(shù)。這個參數(shù)會使得FitLayout失效。他會重新計算Grid的高度。最后得到的Grid無法填充整個頁面。
二、BorderLayout(邊框布局)

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

注意點
(1)center的大小是根據(jù)其他四個部分設(shè)置好后自動計算出來的。它是唯一一個不能省略的部分,如果items里缺少region:'center',就會報錯。
附加功能
(1)設(shè)置子區(qū)域的大小
子區(qū)域是指north、south、west、east。center不能設(shè)置大小,它是根據(jù)其他四塊設(shè)置好后,自動計算出來的。
north和south只能設(shè)置height屬性(高度)。west和east只能設(shè)置width屬性(寬度)。

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

(2)使用split,并限制它拖動的范圍

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

對west設(shè)置了split:true屬性后,west和center的邊界線變寬了。通過拖動這個邊界線可以調(diào)整west和center的寬度。
對north和south設(shè)置split屬性,只能上下拖動。對west和east設(shè)置split屬性,只能左右拖動。
如果不對拖動范圍限制的話,讓用戶任意拖動有可能造成布局變形,所以我們應(yīng)該設(shè)置一個可以拖動的區(qū)域。

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

通過設(shè)置minSize和maxSize來控制拖動的最小、最大長度。
(3)子區(qū)域的收縮和展開。

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

折疊前
折疊后
要實現(xiàn)折疊功能,主要是配置collapsible屬性。這個屬性激活了west區(qū)域的折疊功能,不要要注意的是title屬性是必須要設(shè)置的,因為折疊按鈕是出現(xiàn)在title上的。如果沒有title那折疊按鈕是不會出現(xiàn)的。