constraintlayout是谷歌在2023年i/o大會上發布的全新布局,基本可以實現其他布局的全部功能,重要的是它解決了負責布局過多巢狀的問題,使得效能上有了很大提高。參考分析constraintlayout效能優勢
對android studio的版本要求是2.2以上,現在android studio已經出到3.0+了,在新建布局檔案時也是預設推薦用constraintlayout,而且它還具有很方便的可是化編輯功能,可以很方便的輔助我們完成布局工作。關於視覺化的操作參考郭神constraintlayout新特性介紹
本文主要介紹xml**實現的方式。
constraintlayout功能主要分為以下幾類,分別介紹。
確定位置
確定位置的共13個屬性,其實本質上都是一樣的,看名字就知道是哪一條邊和哪一條邊對齊。
ayout_constraintbaseline_tobaselineof
layout_constraintleft_toleftof
layout_constraintleft_torightof。。。
分析:constraint***:指定當前控制項需要設定約束的屬性部分。如constraintleft表示對當前控制項的左邊進行約束設定。
to***of:其指定的內容是作為當前控制項設定約束需要依賴的控制項或父容器(可以理解為設定約束的參照物),並通過***指定被依賴物件用於參考的屬性。
控制項間邊距margin
注意的點:
居中和偏移bias
居中:constraintlayout並沒有如relativelayout類似的layout_centervertical屬性,而是通過兩端相對父布局或控制項的約束實現居中效果。如下實現水平居中
view 尺寸
控制項尺寸的設定有以下幾種方式:wrap_content、指定尺寸、match_parent(不推薦,因為設定之後其他約束條件都不起作用了)、match_constraint(設為0dp時的模式,即由約束確定尺寸)
設定為true也可以限制內容不超過約束,不同的是它不會影響到約束控制項。如b控制項在內容超出後會換行顯示,而wrap會繼續撐大覆蓋掉左邊button的顯示。
比例ratio
constraintlayout支援設定控制項的寬高比例,通過layout_constraintdimensionratio
屬性設定,該屬性起作用的前提是寬高其中乙個為0dp。
鏈在乙個水平或者豎直方向上,一排view兩兩互相約束,即為鏈。提供了在乙個維度(水平或者垂直),管理一組控制項的方式。
鏈頭:鏈的最左邊的元素稱為鏈頭。鏈的屬性由鏈頭決定。
通過layout_constrainthorizontal_chainstyle
和layout_constraintvertical_chainstyle
在鏈的第乙個元素上設定。預設spread樣式。
設定為不同屬性的表現形式如下:
和linearlayout一樣,鏈也可以使用layout_constrainthorizontal_weight
來分割剩餘空間。但又和android:layout_weight
不太一樣,不一樣的地方如下:
圓形布局
constraintlayout提供鏈一種特殊的布局方式,圓形布局,涉及到的引數也比較簡單,有以下幾個:
ConstraintLayout 約束布局
使用constraintlayout需要我們新增如下依賴 compile com.android.support.constraint constraint layout 1.0.0 alpha4 偏離父容器左邊緣的距離為父容器寬度的25 偏離父容器上邊緣的距離為父容器高度的25 guideline...
ConstraintLayout 約束布局
在以前,android是使用布局如linearlayout relativelayout等來構建頁面,但這些布局使用起來很麻煩,並且經常需要一層一層巢狀,寫乙個簡單的頁面就需要費很大的勁。所以在16年i o大會上,google發布了全新的布局 constraintlayout,其他布局和constr...
約束布局ConstraintLayout總結
約束顧名思義,就是將該view約束到指定的view上 包括外層的constraintlayout和其他的布局 實現位置的定位。因此有時候可能需要更多的定位去約束控制項的位置,強大的功能,靈活的使用給上手帶來了一點點的難度,很多開發者望而生畏。其實掌握之後,真的越用越舒服!constraintlayo...