Android開發 - 檢視佈局屬性解析

阿俊学JAVA發表於2024-07-17
  • LinearLayout:主要以水平或垂直方式來排列介面中的控制元件。並將控制元件排列到一條直線上。線上性佈局中,如果水平排列,垂直方向上只能放一個控制元件,如果垂直排列,水平方向上也只能放一個控制元件

  • RelativeLayout:稱作相對佈局,非常常用的一種佈局。和LinearLayout的排列規則不同,RelativeLayout顯得更加隨意一些,它可以透過相對定位的方式讓控制元件出現在佈局的任何位置,是一種根據父容器和兄弟控制元件作為參照來確定控制元件位置的佈局方式。相對佈局不是絕對定位,而是相對於其父容器或其他控制元件進行定位,提供了靈活性,允許開發者建立複雜的介面結構

  • android:layout_width、android:layout_height:用於指定檢視元件的寬度與高度,這兩個屬性可以接受以下3種型別的值:

    1. 具體數值:如50dp100px等,這種方式將直接設定檢視元件的具體大小
    2. match_parent:檢視元件的大小將與其父容器的大小相同。在LinearLayout中,match_parent將佔據所有可用空間;在RelativeLayout中,match_parent將佔據相對於其他檢視元件的位置
    3. wrap_content:檢視元件的大小將根據其內容動態調整。例如,一個TextView的大小將根據文字的多少自動調整
  • android:layout_weight:該屬性用於在水平或垂直方向上分配額外的空間。當多個檢視元件共享相同的空間時,layout_weight將決定它們如何分配這些空間。例如,在一個水平LinearLayout中,如果兩個按鈕的layout_width都設定為0dp(表示不佔用固定空間),然後分別設定它們的layout_weight為1和2,那麼第二個按鈕將佔據的空間將是第一個按鈕的兩倍

  • android:layout_marginTop:指定該屬性所在控制元件距上部最近控制元件的最小值

  • android:layout_marginBottom:指定該屬性所在控制元件距下部最近控制元件的最小值

  • android:layout_marginLeft:指定該屬性所在控制元件距左邊最近控制元件的最小值

  • android:layout_marginRight:指定該屬性所在控制元件距右邊最近控制元件的最小值

  • xmlns:宣告名稱空間的保留字,其實就是XML中元素的一個屬性

  • xmlns:android:名稱空間 android 用於 Android 系統定義的一些屬性

  • android:id:ID是Android中佈局檔案中的控制元件引用的一個“標籤”,它是在.xml檔案中人為手動建立,如果想要引用佈局檔案中的控制元件,必須得為其設定ID屬性,設定ID屬性的方式有id=”@+id/xx”和id=”@id/xx

    • @+id/xx:在.xml佈局檔案中,是為該控制元件生成一個ID,其名"xx",在後面引用該控制元件時以“R.id.xx”的形式引用。意思是R檔案中生成int xx=value,有兩種情況:

      1. R檔案中不存在xx變數,則生成int xx=value即為控制元件新建一個id值
      2. 若R檔案中已存在xx變數,則不再新建,直接引用該變數對應的id值
      • 例如Button元件中,android:id="@+id/Next_button",是為該Button設定一個名為Next_button的ID;但在R.java中我們可以看到,android studio 底層已經為我們建立好了 Next_button的 地址,只需按一定的格式(R.id.xx)引用即可: mNextButton = (Button) findViewById(R.id.next_button)
    • @id/xx:在.xml佈局檔案中,提取已存在的值為該控制元件設定ID,如果不存在就會報錯。為了重用id,可以在res/values目錄下建立一個ids.xml檔案, 在其中定義可以重用的id,然後在其他佈局檔案中使用@id引用(這樣可以減少R.java檔案中生成的ID數量)

  • android:orientation:線上性佈局中,控制元件排列有水平和垂直兩個方向,控制元件排列方向由 android:orientation 屬性來控制,該屬性需要加在 LinearLayout 標記的屬性中從而設定該控制元件內的控制元件佈局排列朝向:

    • android:orientation = "horizontal":指定佈局內控制元件排列方式為 水平排列
    • android:orientation = "vertical":指定佈局內控制元件排列方式為 垂直排列
  • gravity:在android檢視佈局中,我們經常會用到“重心”gravity這個屬性。但是gravity有兩種不同的型別:

    1. android:gravity:控制元件自身內容對自己的限定,一般賦值為 android:gravity = "center" 讓控制元件自身內的內容(text文字、button按鈕等)居中排列

    2. android:layout_gravity:與gravity屬性不同的是,layout_gravity屬性是用來設定該View相對與父View的位置,以下提供兩種賦值使用型別:

      1. android:layout_gravity="center_horizontal":以父Vieworientation = "vertical"垂直為準,水平居中於父View
      2. android:layout_gravity="center_vertical":以父Vieworientation = "horizontal"水平為準,垂直居中於父View
      • 注意事項:子控制元件如果選擇橫或縱居中,這種屬性宣告是不能和父佈局的排列方式相沖的,案例如下:
        1. android:layout_gravity="center_horizontal":以父Vieworientation = "horizontal"垂直為準,相沖位置不變
        2. android:layout_gravity="center_vertical":以父Vieworientation = "vertical"垂直為準,相沖位置不變
  • scaleType:scaleType的設定方式有以下兩種:

    1. android:scaleType="xxx":在layout的xml中定義android:scaleType="xxx",取值範圍為matrix、fitXY、fitStart、fitCenter、fitEnd、center、centerCrop、centerInside,預設取值為fit_center。可以參考一下例子:
      • android:scaleType="center"
        • 當圖片大於ImageView的寬高:以圖片的中心點和ImageView的中心點為基準,按照圖片的原大小居中顯示,不縮放,用ImageView的大小擷取圖片的居中部分
        • 當圖片小於ImageView的寬高:直接居中顯示該圖片
      • android:scaleType="centerCrop"
        • 當圖片大於ImageView的寬高:以圖片的中心點和ImageView的中心點為基準,按比例縮小圖片,直到圖片的寬高有一邊等於ImageView的寬高,則對於另一邊,圖片的長度大於或等於ImageView的長度,最後用ImageView的大小居中擷取該圖片
        • 當圖片小於ImageView的寬高:以圖片的中心店和ImageView的中心點為基準,按比例擴大圖片,直到圖片的寬高大於或等於ImageView的寬高,並按ImageView的大小居中擷取該圖片
      • android:scaleType="centerInside"
        • 當圖片大於ImageView的寬高:以圖片的中心和ImageView的中心點為基準,按比例縮小圖片,使圖片寬高等於或者小於ImagevView的寬高,直到將圖片的內容完整居中顯示
        • 當圖片小於ImageView的寬高:直接居中顯示該圖片
      • android:scaleType="fitCenter":把圖片按比例擴大(縮小)到ImageView的寬或高其中一個,居中顯示
      • android:scaleType="fitStart":把圖片按比例擴大(縮小)到ImageView的寬或高其中一個,在ImageView的上方顯示
      • android:scaleType="fitEnd":把圖片按比例擴大(縮小)到ImageView的寬或高,在ImageView的下方顯示
      • android:scaleType="fitXY":把圖片按指定的大小在ImageView中顯示,拉伸或收縮圖片,不保持原比例,填滿ImageView
      • android:scaleType="matrix":運用圖片進行繪製時的矩陣進行縮放,該矩陣可以透過imageView.setImageMatrix(matrix)進行設定。預設情況下展現形式為:不進行任何縮放,從ImageView的左上角開始擺放,原圖超過ImageView的部分作裁剪處理
    2. imageView.setScaleType(ImageView.ScaleType.XXX):在java程式碼中呼叫imageView.setScaleType(ImageView.ScaleType.XXX),取值範圍為ImageView.ScaleType.MATRIX、ImageView.ScaleType.FIT_XY、ImageView.ScaleType.FIT_START、ImageView.ScaleType.FIT_CENTER、ImageView.ScaleType.FIT_END、ImageView.ScaleType.CENTER、ImageView.ScaleType.CENTER_CROP、ImageView.ScaleType.CENTER_INSIDE,預設取值為ImageView.ScaleType.FIT_CENTER
  • android:background:設定控制元件背景顏色,賦值為十六進位制顏色程式碼,例如:#FFFFFF即為白色

  • android:text:標題文字

  • android:textAllCaps:文字是否為大寫,取值範圍為true、false

  • android:textColor:文字顏色,賦值為十六進位制顏色程式碼,例如:#FFFFFF即為白色

  • android:textSize:文字大小

相關文章