Sencha touch 開發系列 元件布局

2022-07-07 08:45:16 字數 3278 閱讀 7684

你如果對st的元件有了一些認識後,然後你又想做一些東東來體驗下st。拿到設計圖後,那麼你就需要好好的規劃你的應用,需要哪些元件,各元件都應該擺放在**?

這個時候你就需要了解一下st裡面的布局(layout)

同樣,開啟我們的api文當

找到layout,並展開,

我們可以看到st為我們提供了:vbox,hbox,card,fit

有人肯定會問還有abstractbox,和default

abstractbox(抽象盒子)是vbox和hbox的父類,是default的子類,

default(預設)提所有布局的基類,一般不需要提交

所以常用的只有vbox,hbox,card,fit

我在此特別宣告一下:所有的布局方式都是應用於(容器的)子元件的擺放上面,比如:乙個廚房,廚房裡面很多東西,如何擺放你必須告訴廚房,而不是告訴桌子或凳子。

下面我們就一一介紹下嘍!

vbox:垂直擺放盒子

hobx:水平擺放盒子

card:卡片式存放

fit:填充式存放

先從字面意思上去理解一下

vbox:

就是將容器內部的所有項(item),垂直方式擺放。

看圖:

**:

//在乙個全屏的容器中,我們放了四個子項,第一項佔了乙份 

ext.create('ext.container', ,,,

]});

看**備註。

我們在乙個全屏的容器,放了四個item,我們又採用了vbox,意味著,我們將需要把這些項垂直擺放。

有人會問了,那如何去確定某一項佔多少位置(高度)呢?

恩,我們確實需要告訴這個容器,各子項需要多少位置才能放得下,在這我們應用了flex(份數),通過flex去請求容器給它對應的空間。

容器在這種布局會彙總所有子項的flex總數。然後平分,在這我們flex總數是4,那就意味著,我們這個全容器將分成4分,每個子項的flex都是1,說明他們都只點了乙份了(平均分配了!)

在圖上,你可以看出,他們的高度都相等的哦。

你可以把上面的**複製到我們的code editor中去檢視他的效果,然後改變各項的 flex去體驗容器是怎麼分配空間的。

又有人會問了,flex無法確定我的實際高度?

恩,確實,這裡我們還有乙個利器 height,我們可以通過設定某乙個子項的height告訴容器它需要審請多少高度。

如:

//在乙個全屏的容器中,我們放了四個子項,第一項佔了150的高度,然後將容器的剩餘高度分成了三份,每項佔乙份

ext.create('ext.container', ,,,

]});

效果:

注意看**備註,或許已經明白了?

vbox是作於垂直方向的,用來分配窗器高度的。

那麼hobx就很明顯了,他是平分容器寬度的。

我們把上述**的layout改為hbox,看看效果。

**:

//在乙個全屏的容器中,我們放了四個子項,第一項佔了150的寬度,然後將容器的剩餘高度分成了三份,每項佔乙份

ext.create('ext.container', ,,,

]});

同樣看備註,你或許能夠明白了vbox和hbox的區別與作用了?不明白的,速度加入我們的社群或群:13453484

下面我們一搞個vbox和hbox結合的例子

**:

//在乙個全屏的容器中,我們放了四個子項,將容器的剩餘高度分成了四份,每項佔乙份

ext.create('ext.container', ,]},,

,]});

效果:

至此,你會用了沒,理解了沒?不會的,不理解的,就code editor裡面多多練習,多多體會哈。這很重要哦......

下面,我們來講fit,card。

fit是用來將子項整個填充至容器中,意思就是視窗有多子,那麼他下面的子項就有多大了。

用例項說話:

//建立乙個300*200的容器,裡面放了乙個子項,並指定這個容器的layout為fit布局

var container= ext.create('ext.container',

});//將container新增到我們的st應用的頂層容器中,ext.viewport是乙個全域性容器,無需定義,它指向的是你應用的最頂層。

ext.viewport.add(container);

效果:

那麼card布局是怎樣的呢,他其實和fit相似,只是他可以有多層,就像卡放一樣疊起來放在容器中。

照樣用例項說話:

//建立乙個全屏的容器,在裡面放了四項,容器的layout為card

var container= ext.create('ext.container', ,,,

]});//預設我們會顯示第一項,因採用card布局,我們可以指定將第三項顯示出來(下標從0開始)

container.setactiveitem(2);

效果:

//看備註,明白了麼?很簡單,card布局內的東西就是把它一層層堆在裡面,要顯示哪一層的時候,只需要呼叫容器的setactiveitem  

card在一次顯示上,只會顯示乙個子項,而其它的子項將是不可見的。

就上面的例子,我們把layout的card改為fit

你再看效果:

即便是我們調和了setactiveitem容器也是把四個項都顯示出來的,很亂?

現在明白fit和card的區別了吧

如果容器中只一項,且需要填充顯示的時候你可以用fit,如果有多項且需要分層靈活顯示,那麼你就需要用card了。

至此,我們的布局全部講完了,學習還得靠自己哈,多多練習,就在我們的code editor裡面,每種布局你都需要玩熟哦。

學習中有不明白的,速度加入我們的社群或群:13453484

Sencha Touch 入門指導

b sencha touch 入門指導 b 1.介紹sencha touch 是乙個js框架.用於建立在基於觸控裝置的web應用.它使用html,css來提供和本地應用一樣效果的體驗,而不需要外掛程式.2.使用sencha touch url 建立html index.html 引入css ext ...

Sencha Touch 歷史支援

上述功能綜述之,就是為了更好地與原生程式相貼近,務求達到無差別的使用者體驗 這一點,尤其體現在能夠提供 返回鍵 的 android 機器上面。設定路由器 setting up routes 為你的應用安排的歷史記錄可以說一點都不困難,主要集中在如何理解的路由器 routes 的概念之上。路由器,簡言...

Sencha Touch元件選擇器

在開發的過程中,經常會碰到需要呼叫已建立的元件的情況。一般情況下,可以用ext.getcmp 方法達到這一目的。這個方法是ext.componentmanager的get方法的快捷方式,呼叫ext.getcmp 方法實際就是間接呼叫了ext.componentmanager.get 方法。ad ge...