Android 基礎課堂 - Lesson.3五大布局
  • 一、LinearLayout (線性布局)


    • 什么叫做線性布局呢,其實理解起來也很簡單,就是它里面的東西,都按照一定的順序一個接著一個排放,那么一定的順序指什么呢,在線性布局里,提供了兩種布局排序方式,一種是水平的即horizontal,一種是垂直的即vertical,讓我們來看看這兩種布局方式吧

    • 水平 horizontal:在水平布局的LinearLayout 里,內部控件是從左到右一個個排序的,最前面的在左邊,最后面的在右邊,具體是什么樣的呢,讓我們來實踐一下,先看下面的這個效果圖

    • 聚劃算三個字分別是三個控件,我們可以看到,這三個控件是從左到右進行排列的,這就是水平布局的LinearLayout ,代碼如下:

    • 接下來我們來看看垂直布局的LinearLayout

    • 垂直 vertical:上面也講了水平布局的了,那么垂直布局也就很好理解的,只需要把從左到右的順序改為從上到下的順序就是了,讓我們來看看布局實現效果

    • 布局代碼與上面的水平的差不多:

    • 我們可以看到,LinearLayout 是水平布局還是垂直布局,是通過一個叫orientation的屬性來控制的,關于在代碼中,有很多其他屬性,在文末會給一些常用的屬性的解釋



  • 二、RelativeLayout(相對布局)


    • 相對布局是啥意思呢,就是內部各子元素按照之間的位置關系來完成布局。在此布局中的子元素里與位置相關的屬性將生效。例如android:layout_below, android:layout_above, android:layout_centerVertical等。注意在指定位置關系時,引用的ID必須在引用之前,先被定義,否則將出現異常,讓我們來看看實現效果:

    • 在布局中,我們將“劃”所對應的控件設置為水平居中,這就是一個相對位置的概念,位于父布局的水平中間,然后給“聚”所對應的控制設置的位置是在“劃”的左邊,給“算”所對應的控制設置的位置是在“劃”的右邊,所以都是通過相對位置關系來完成布局的,最后的顯示效果如圖,布局代碼如下:

    • (父布局的orientation屬性是沒有的,截圖時候忘去掉了,由于目前沒有cdn權限,比較麻煩,就不換圖了,在這標注一下好了)

  • 三、FrameLayout(幀布局)


    • 絕對布局是什么意思呢,其實理解起來很簡單,就是在這個布局里,給控件設置位置為多少,那么它實際顯示的位置就是多少,所以在絕對布局中的子元素的android:layout_x和android:layout_y屬性將生效,用于描述該子元素的坐標位置。屏幕左上角為坐標原點(0,0),第一個0代表橫坐標,向右移動數值增大,第二個0代表縱坐標,向下移動,數值增大。在絕對布局中,控件可以完全重疊,因為它只根據x、y值來判斷該顯示控件的位置,如果子控件沒有設置x、y值的話,那么默認將設置x、y值都為0。在實際開發中,通常不采用此布局格式,因為它的界面代碼不能很好的適配各種終端,讓我們來看一個例子

    • 在上圖顯示的布局中,我們沒有給紅色的控件設置x、y值,所以它使用了默認的x、y值即都為0,綠色的控件,我們將它的x、y值都設為了50dp,所以它會相對于左上角頂點的位置右移50dp切下移50dp,藍色的控件,我們將其的x、y值都設置為了100dp,所以它相對于原點向右和向下各偏移了100dp,下面看看實現代碼

    • 四、AbsoluteLayout(絕對布局)

    • FrameLayout是什么樣的布局呢,這個布局翻譯成中文也不是那么好翻譯,不是那么好懂,但是其實它的布局方式并不難,甚至可以說,是最簡單的一個布局方式了,那他具體是怎么布局的呢?在FrameLayout中,所有的子元素都不能被指定放置的位置,它們統統都被放在了該區域的左上角,從左上角開始計算寬高,并且后面的子元素直接覆蓋在前面的子元素之上,將前面的子元素部分和全部遮擋(具體是遮擋部分還是全部,就得看上面的布局比起下面的布局,大小問題了)。讓我們來看看實現的效果:

    • 在這里,我們寫了三個控件,第一層的紅色的,大小都為200dp,第二層為綠色的,大小都為100dp,第三次為藍色的,大小都為50dp,然后我們可以看到,控件的顯示,都是從左上角開始,并且是根據我們的層次一層層疊上去的,第一層在最下面,第二層其次,第三層在最上面,這就是FrameLayout,最簡單的一個布局,完全不需要設置位置,只能是都從左上角開始布局,代碼如下:

  • 五、TableLayout(表格布局)


    • 表格布局,從它的名字來看,大家應該也可以大概猜到它的布局方式了,沒錯,正如它的名字所顯示的,它就是將整個所含區域分成N行N列的布局格式,一個TableLayout由許多TableRow組成,一個TableRow就代表TableLayout中的一行,既然每一行都是由一個TableRow組成的,那么每一行里的列數是由TableRow控制的,所以我們上面說的N行N列,這兩個N不一定是相等的,還有甚至每一行的列數都是可以不相等的,下面讓我們來看看實現效果

    • 從上面的布局來看,我們將給第一行設置了一個控件,所以它只含有一列,第二行有兩個控件,含有兩列,第三行有三個控件,含有三列,下面看看代碼實現:


  • 這些只是五大布局的一些簡單用法,還有很多東西的可以研究的可以學的,可以在后面的學習中慢慢深入,不同的布局結合著使用可以帶來各種效果,當然了,一個好的程序員,會在能實現相同效果的情況下,去巧妙的使用布局,使得層級較少,本周的基礎課堂就先講講五大布局,下周我們就會開始實際使用這些布局啦,讓我們下周的基礎課堂見吧(下面附上一些常用的xml屬性,屬性實在是太多了,還需要自己了解了解,下面這些只是平時可能用的比較多的)

  • android:layout_width 指定組件布局寬度

  • android:layout_height 指定組件布局高度

  • android:alpha 設置組件透明度

  • android:background 設置組件背景顏色

  • android:clickable 設置組件是否可以激發單擊事件

  • android:foucsable 設置該組件是否可以獲取焦點

  • android:foucsableInTouchMode 設置組件在觸摸模式下是否可以獲取焦點

  • android:id id,同于識別控件

  • android:longClickable 設置組件是否可以響應長單擊事件

  • android:minHeight 設置組件的最小高度

  • android:minWidth 設置組件的最小寬度

  • android:onClick 綁定監聽事件

  • android:padding 設置四周的內部距離

  • android:paddingBouttom 設置底部的內部距離

  • android:paddingLeft 設置左邊的內部距離

  • android:paddingRight 設置右邊的內部距離

  • android:paddingTop 設置上面的內部距離

  • android:layout_margin 設置距離四周的距離

  • android:layout_marginBouttom 設置距離底部的距離

  • android:layout_marginLeft 設置距離左邊的距離

  • android:layout_marginRight 設置距離右邊的距離

  • android:layout_marginTop 設置距離頂部的距離

  • android:rotation 設置組件旋轉的角度

  • android:rotationX 設置組件繞x軸旋轉的角度

  • android:rotationY 設置組件繞Y軸旋轉的角度

  • android:scaleX 設置在水平方向上的縮放比

  • android:scaleY 設置在垂直方向上的縮放比

  • android:scrollX 設置水平滾動偏移量

  • android:scrollY 設置垂直滾動偏移量

  • android:scrollbarSize 滾動條大小

  • android:scrollbarStyle 滾動條風格

  • android:trasformPivotX 設置旋轉中心的X坐標

  • android:trasformPivotY 設置旋轉中心的X坐標

  • android:traslationX 設置在x方向上的位移

  • android:traslationY 設置在Y方向上的位移

  • android:visibility 是否可見

來源:知乎

上一篇: android學習路線:如何成長為高級工程師

下一篇: Android 平臺上編程實現 GPS 定位

分享到: 更多
北京pk10技巧图 玩三公时押注的绝技 北京pk软件手机下载 大乐透近5000期走势图 苹果彩票 91y哪里可以上下分 北京pk10人工计划在线 必中快三计划安卓版 全天老北京pk赛车计划 快3三不同技巧 稳赚 大富贵斗牛挂 黑龙江时时停了 彩票365app免费下载 新时时群 福彩3d六码复式选择 麻将二八杠游戏下载