Android的頁面布局(框架結構)

2021-06-19 01:15:22 字數 2552 閱讀 9868

android的介面是有布局和元件協同完成的,布局好比是建築裡的框架,而元件則相當於建築裡的磚瓦。元件按照布局的要求依次排列,就組成了使用者所看見的介面。android的五大布局分別是linearlayout(線性布局)、framelayout(單幀布局)、relativelayout(相對布局)、absolutelayout(絕對布局)和tablelayout(**布局)。

linearlayout:

linearlayout按照垂直或者水平的順序依次排列子元素,每乙個子元素都位於前乙個元素之後。

如果是垂直排列,那麼將是乙個n行單列的結構,每一行只會有乙個元素,而不論這個元素的寬度為多少;

如果是水平排列,那麼將是乙個單行n列的結構。

如果搭建兩行兩列的結構,通常的方式是先垂直排列兩個元素,每乙個元素裡再包含乙個linearlayout進行水平排列。

linearlayout中的子元素屬性android:layout_weight生效,它用於描述該子元素在剩餘空間中占有的大小比例。加入一行只有乙個文字框,那麼它的預設值就為0,如果一行中有兩個等長的文字框,那麼他們的android:layout_weight值可以是同為1。如果一行中有兩個不等長的文字框,那麼他們的android:layout_weight值分別為1和2,那麼第乙個文字框將佔據剩餘空間的三分之二,第二個文字框將佔據剩餘空間中的三分之一。android:layout_weight遵循數值越小,重要度越高的原則。

framelayout:

framelayout是五大布局中最簡單的乙個布局

,在這個布局中,整個介面被當成一塊空白備用區域,所有的子元素都不能被指定放置的位置,它們統統放於這塊區域的左上角,並且後面的子元素直接覆蓋在前面的子元素之上,將前面的子元素部分和全部遮擋。顯示效果如下,第乙個textview被第二個textview完全遮擋,第三個textview遮擋了第二個textview的部分位置。

absolutelayout:

absolutelayout是絕對位置布局

。在此布局中的子元素的android:layout_x和android:layout_y屬性將生效,用於描述該子元素的座標位置。螢幕左上角為座標原點(0,0),第乙個0代表橫座標,向右移動此值增大,第二個0代表縱座標,向下移動,此值增大。在此布局中的子元素可以相互重疊。在實際開發中,通常不採用此布局格式,因為它的介面**過於剛性,以至於有可能不能很好的適配各種終端

relativelayout:

relativelayout按照各子元素之間的位置關係完成布局。在此布局中的子元素裡與位置相關的屬性將生效。例如android:layout_below, android:layout_above等。子元素就通過這些屬性和各自的id配合指定位置關係。注意在指定位置關係時,引用的id必須在引用之前,先被定義,否則將出現異常。

relativelayout裡常用的位置屬性如下:

android:layout_toleftof —— 該元件位於引用元件的左方

android:layout_torightof —— 該元件位於引用元件的右方

android:layout_above —— 該元件位於引用元件的上方

android:layout_below —— 該元件位於引用元件的下方

android:layout_alignparentleft —— 該元件是否對齊父元件的左端

android:layout_alignparentright —— 該元件是否齊其父元件的右端

android:layout_alignparenttop —— 該元件是否對齊父元件的頂部

android:layout_alignparentbottom —— 該元件是否對齊父元件的底部

android:layout_centerinparent —— 該元件是否相對于父元件居中

android:layout_centerhorizontal —— 該元件是否橫向居中

android:layout_centervertical —— 該元件是否垂直居中

relativelayout是android五大布局結構中最靈活的一種布局結構,比較適合一些複雜介面的布局。下面示例就展示這麼乙個情況,第乙個文字框與父元件的底部對齊,第二個文字框位於第乙個文字框的上方,並且第三個文字框位於第二個文字框的左方。

tablelayout:

tablelayout顧名思義,此布局為**布局,適用於n行n列的布局格式。乙個tablelayout由許多tablerow組成,乙個tablerow就代表tablelayout中的一行。

tablerow是linearlayout的子類,它的android:orientation屬性值恒為horizontal,並且它的android:layout_width和android:layout_height屬性值恒為match_parent和wrap_content。所以它的子元素都是橫向排列,並且寬高一致的。這樣的設計使得每個tablerow裡的子元素都相當於**中的單元格一樣。在tablerow中,單元格可以為空,但是不能跨列。

關閉

SiteMesh頁面布局修飾框架

1.sitemesh 是乙個web頁面布局修飾框架,用於構建包含大量頁面,需要一致的外觀樣式 look fell 導航和布局機制的大型 sitemesh應用decorator模式,用filter擷取request和response,把頁面元件head,content,banner結合為乙個完整的檢視...

Weex 框架中 JS Framework 的結構

weex 具有移動端跨平台的特性,js framework 是其中比較關鍵的一層。首先來看一下 js framework 在 weex 中的位置 從圖中可以看出 weex 整體的工作流程。首先開發者可以宣告式的定義元件,形成.we檔案,通過 weex toolkit 提供的工具將.we檔案轉為 js...

Scrapy框架快速建立專案命令 框架的結構

scrapy在爬蟲開發領域是非常不錯的一款框架,如果要從事爬蟲開發那麼這款框架一定要非常熟悉,儘管在實際開發中可能用不上,但是其中的架構思想也能讓自己寫的爬蟲質量有不一般的提公升。scrapy框架應該掌握的幾條命令 cmd命令列介面執行 scrapy shell url 該條命令常用於scrapy開...