1. 程式人生 > >ConstraintLayout約束佈局的屬性盤點

ConstraintLayout約束佈局的屬性盤點

學習文章:
1.ConstraintLayout約束佈局的官方文件
2.郭霖-Android新特性介紹,ConstraintLayout完全解析
3. 鴻洋-ConstraintLayout 完全解析 快來優化你的佈局吧
4.ConstraintLayout —— 約束佈局 知識點整理
5.ConstraintLayout使用詳解

  • 相對位置屬性
    屬性類似RelativeLayout

    		layout_constraintLeft_toLeftOf//目標view左邊與另一個view左邊對齊
             layout_constraintLeft_toRightOf//目標view左邊與另一個view右邊對齊
             layout_constraintRight_toLeftOf//目標view右邊與另一個view左邊對齊
             layout_constraintRight_toRightOf//目標view右邊與另一個view右邊對齊
             layout_constraintTop_toTopOf//目標view頂部與另一個view頂部對齊
             layout_constraintTop_toBottomOf//目標view頂部與另一個view底部對齊
             layout_constraintBottom_toTopOf//目標view底部與另一個view頂部對齊
             layout_constraintBottom_toBottomOf//目標view底部與另一個view底部對齊
             layout_constraintBaseline_toBaselineOf//基於baseline對齊
             layout_constraintStart_toEndOf//目標view起始邊緣與另一個view結束邊緣對齊
             layout_constraintStart_toStartOf//目標view起始邊緣與另一個view起始邊緣對齊
             layout_constraintEnd_toStartOf//目標view結束邊緣與另一個view起始邊緣對齊
             layout_constraintEnd_toEndOf//目標view結束邊緣與另一個view結束邊緣對齊
    

:Baseline是文字的基線,意思是基於控制元件中文字的下邊緣對齊。

  • Margin邊距
    兩種Margin邊距用法。
    第一種,和普通margin用法相同
	 android:layout_marginStart  
	android:layout_marginEnd
	android:layout_marginLeft
	android:layout_marginTop
	android:layout_marginRight
	android:layout_marginBottom

第二種,goneMargin,可以給當view被設定為View.Gone時設定邊距,以避免UI佈局混亂。

	layout_goneMarginStart
	layout_goneMarginEnd
	layout_goneMarginLeft
	layout_goneMarginTop
	layout_goneMarginRight
	layout_goneMarginBottom
  • BIOS(間隙比例)

    layout_constraintHorizontal_bias  
    layout_constraintVertical_bias  
    

    例如:layout_constraintHorizontal_bias =0.3,view水平方向左右間隙比例為3:7。
    有人會說我線性佈局一行程式碼實現居中,你這也太太太囉嗦了,naive,下面才是約束佈局的新特性,一行程式碼實現固定比例偏移。比如下面這個場景,我要讓A左右兩邊的空檔寬度比例為3:7。

    這裡寫圖片描述

  • Guideline輔助線
    輔助線分為豎線和橫線,用android:orientation來表示,可取”vertical””horizontal”.(可通過拖拽的方式來顯示,通過下面的屬性其中之一來確定其位置,多用percent)
    具體用法參考部落格: 鴻洋-ConstraintLayout 完全解析 快來優化你的佈局吧

	layout_constraintGuide_begin
	layout_constraintGuide_end
	layout_constraintGuide_percent
  • ConsTraintLayout權重比實現
    控制元件的寬高比:app:layout_constraintDimensionRatio (當控制元件的寬高中有一個為0dp的時才起作用),如app:layout_constraintDimensionRatio=“16:9”控制元件的寬高比例為16:9。
    app:layout_constraintHorizontal_weight //控制元件在水平方向佔父佈局的比例
	app:layout_constraintVertical_weight//控制元件在豎直方向佔父佈局的比例
  • 鏈Chain
    當多個控制元件通過相互約束髮生聯絡的時候,就組成了一個鏈Chain,我們可以通過鏈頭來設定鏈的型別chainStyle,第一個就是鏈頭。
    總共有三個屬性:
    spread,packed,spread_inside預設為spread。具體效果可參考: 鴻洋-ConstraintLayout 完全解析 快來優化你的佈局吧
	app:layout_constraintHorizontal_chainStyle
	app:layout_constraintVertical_chainStyle
  • Group(群組)
    使用群組,可以將某些view分組在一起。集中起來進行控制。例如:控制佈局中某幾個view的可見性,就只需要設定group的可見性即可,他是通過ids將控制元件放到一個群組裡的。
	<android.support.constraint.Group 
	android:id="@+id/id_group" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	app:constraint_referenced_ids="id_btn,id_tv" /> 
  • Barrier (屏障)
    這是一個輔助類,和Guidline一樣不參與佈局的繪製,是不可見的。
    Barrier 是用多個 View 作為限制源來決定自身位置的一種輔助線,它有兩個比較重要的屬性:
    1、barrierDirection,取值有top、bottom、left、right、start、end,用於控制 Barrier 相對於給定的 View 的位置。比如在上面的栗子中,Barrier 應該在 Title 的右側,因此這裡取值right(也可end,自行琢磨)。
    2、constraint_referenced_ids,取值是要依賴的控制元件的id(不需要@+id/)。Barrier 將會使用ids中最大的一個的寬(高)作為自己的位置。
    在這裡插入圖片描述
    參考部落格文章:ConstraintLayout 中 Barrier 的使用