Android 佈局

Joerrot發表於2018-08-05

View與ViewGroup和佈局管理器之間的關係:

其中佈局管理器包括:線性佈局、表格佈局、幀佈局、相對佈局、絕對佈局。所有佈局都可當成容器類使用。

線性佈局(LinearLayout是表格佈局TableLayout的父類):

控制個元件之間的位置關係(對齊方式:android:gravity(多組選擇以"|"分隔),排列方式:android:orientation)

表格佈局(TableLayout):

主要先定義表格佈局,然後通過TableRow來控制行的內容(例如,一個表格佈局可以新增兩行,每一行可以用TableRow進行行內容的控制。向某一行中新增3個Button元件,則表示該行有三列)

表格佈局的XML屬性有:

android:collapseColumns="1"   表示2列的所有單元格會被隱藏;

android:shrinkColumns="1,2"   表示2,3列的所有單元格的寬度可以被收縮,以保證該表格適應父容器的寬度;

android:stretchColumns表示列的所有單元格的寬度可以被收縮,以保證元件能完全填滿該表格空餘空間。

幀佈局(FrameLayout):

為每一個加入其中的元件建立一個空白的區域(稱為一幀),這些幀會根據gravity屬性進行自動對齊。

當我們往裡面新增控制元件的時候,會預設把他們放到這塊區域的左上角,而這種佈局方式卻沒有任何的定位方式,所以它應用的場景並不多;幀佈局的大小由控制元件中最大的子控制元件決定,如果控制元件的大小一樣大的話,那麼同一時刻就只能看到最上面的那個元件!後續新增的控制元件會覆蓋前一個!雖然預設會將控制元件放置在左上角,但是我們也可以通過layout_gravity屬性,指定到其他的位置

兩個屬性:

  • android:foreground:設定改幀佈局容器的前景影像
  • android:foregroundGravity:設定前景影像顯示的位置
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/FrameLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent"    
    tools:context=".MainActivity"     
    android:foreground="@drawable/logo"    
    android:foregroundGravity="right|bottom">    
    
    <TextView    
        android:layout_width="200dp"    
        android:layout_height="200dp"    
        android:background="#FF6143" />    
    <TextView    
        android:layout_width="150dp"    
        android:layout_height="150dp"    
        android:background="#7BFE00" />    
     <TextView    
        android:layout_width="100dp"    
        android:layout_height="100dp"    
        android:background="#FFFF00" />    
        
</FrameLayout>    

23622209

相對佈局(RelativeLayout):

a)相對佈局是指通過當前控制元件與兄弟控制元件或是父控制元件之間的相對位置,從而達到控制控制元件位置的目的。
b)相對佈局的基本思路,預設控制元件位置是左上角,如果有第二個控制元件,沒有指定第二個控制元件的位置那麼它預設也是左上角。會重疊;

如果第二個控制元件的位置相對於第一個控制元件位置擺放,好處是如果第一個控制元件的位置由於某種原因出現變化而第二個控制元件的位置相對於第一個控制元件的相對位置是不會變化的。

主要功能是通過內部類LayoutParams的XML屬性來控制該子元件與佈局容器的對齊或相對位置:

下面的值只能設為布林值

下面的值只能設為其他UI元件的ID

絕對佈局(AbsoluteLayout):定義座標(layout_x和layout_y確定子元件的座標)

 

 

 

相關文章