android的五大布局分別是:
linearlayout(線性布局)
framelayout(單幀布局)
relativelayout(相對布局)
absolutelayout(絕對布局)
tablelayout(**布局)
linearlayout:
linearlayout按照垂直或者水平的順序依次排列子元素,每乙個子元素都位於前乙個元素之後。如果是垂直排列,那麼將是乙個n行單列的結構,每一行只會有乙個元素,而不論這個元素的寬度為多少;如果是水平排列,那麼將是乙個單行n列的結構。如果搭建兩行兩列的結構,通常的方式是先垂直排列兩個元素,每乙個元素裡再包含乙個linearlayout進行水平排列。
linearlayout中有乙個最重要的元素屬性android:layout_weight,它用於描述該子元素在剩餘空間中占有的大小比例。所有的檢視都有乙個layout_weight值,其預設值為0,表示檢視多大就佔據多大的螢幕空間,即不縮放。若賦乙個》0的數值,則各檢視元素將會把父檢視中的可用空間進行分割,分割大小具體取決於每乙個檢視的layout_weight值以及該值在當前螢幕布局的整體layout_weight值和在其它檢視螢幕布局的layout_weight值中所佔的比率而定。即設定了layout_weighte就會對此view進行縮放,這樣的好處是可以讓某些view進行縮放以填充剩餘螢幕空間。
假如一行只有乙個文字框,那麼它的預設值就為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中,單元格可以為空,但是不能跨列。
下面示例演示了乙個tablelayout的布局結構,其中第二行只有兩個單元格,而其餘行都是三個單元格。
WPF布局 布局屬性(四)
在wpf布局框架中,如果標籤不設定布局屬性,系統預設為填充模式。當然,我們可以通過一系列標籤的屬性來達到布局標籤的作用。最常見的屬性是width和height,是指定標籤的寬和高。minwidth,minheight是指標籤的最小寬度和最小高度,即使父容器的寬和高小於這個數字,標籤也保持這個值。ma...
Android自定義布局屬性
需要在values下定義attrs.xml 其中fomat表示屬性的取值型別 integer 整數 dimension 尺寸 dp dip sp px color 顏色 string 字串 float 浮點數 android rating 1.5 referrence 引用 id btn drawa...
Android 眾多的布局屬性詳解
android功能強大,介面華麗,但是眾多的布局屬性就害苦了開發者,下面這篇文章結合了網上不少資料,花費本人乙個下午搞出來的,希望對其他人有用。第一類 屬性值為true或false android layout centerhrizontal 水平居中 android layout centerve...