記錄ConstraintLayout的基本屬性

前言:

? ? ? ? ?目前我的android studio的版本是2.3.3,所以每次新建項(xiàng)目時(shí)震束,都會(huì)主動(dòng)導(dǎo)入" compile'com.android.support.constraint:constraint-layout:1.0.2' ",使得項(xiàng)目中布局直接改成“android.support.constraint.ConstraintLayout”当犯,這就使得本身還停留在使用LinearLayout和RelativeLayout布局的我懵了垢村,于是耐下性子來(lái)學(xué)習(xí)ConstraintLayout,記錄下學(xué)習(xí)過(guò)程嚎卫。

? ? ? 以下把ConstraintLayout簡(jiǎn)化為CL嘉栓,RelativeLayout簡(jiǎn)化為RL,LinearLayout簡(jiǎn)化為L(zhǎng)L拓诸。


? ? 本文參考的文章:

? ? ? ? ? Google官方文檔的:解析ConstraintLayout的性能優(yōu)勢(shì)? ? 詳細(xì)介紹了CL如何優(yōu)化了性能

? ? ? ? ? 郭霖郭神的:Android新特性介紹侵佃,ConstraintLayout完全解析? ?

? ? ? ? ? ?鴻洋大神的:ConstraintLayout 完全解析 快來(lái)優(yōu)化你的布局吧? ?


? ? CL是android studio2.2的新特性,相比較于RL和LL在性能方面有很大的提升奠支。

? ? CL顧名思義馋辈,約束布局。相比較于RL和LL倍谜,它的使用不需要向RL和LL這樣一層嵌套一層迈螟,而是通過(guò)控件與控件間的約束來(lái)完成布局的擺放。

?本文主要記錄 ConstraintLayout的主要屬性:(如當(dāng)前的控件為控件A)

? ? (一) 相對(duì)約束屬性

app:layout_constraintLeft_toLeftOf="@+id/B"? 實(shí)際作用和字面意思一樣尔崔,控件A的左側(cè)是在控件B的左側(cè)答毫,即A和B左側(cè)對(duì)齊??

app:layout_constraintTop_toBottomOf="@+id/B" 控件A的頂部在控件B的底部,即A在B的下邊

app:layout_constraintRight_toLeftOf="@+id/B"? 控件A在控件B的左邊

app:layout_constraintBottom_toBottomOf="parent"? ?控件A與位于屏幕最底端

注意:當(dāng)B這個(gè)id在A之前定義的話可以直接寫成"@id/B",如果不是則需寫成"@+id/B"季春,否則會(huì)因?yàn)檎也坏絠d為B的控件兒編譯報(bào)錯(cuò)洗搂。

還有其他的:

? app:layout_constraintTop_toBottomOf="? "

?app:layout_constraintLeft_toRightOf="? "

?app:layout_constraintLeft_toRightOf="? "

?布局和字面意思一致。

(二) 沒有l(wèi)ayout_weight這個(gè)屬性

? ?使用 android:layout_width="0dp" ,? 效果圖為:

圖1

實(shí)際代碼為:

?相比較RL蚕脏,把button2的android:layout_width設(shè)為了0侦副,所以效果直接出來(lái),不需要layout_weight這個(gè)屬性

(三) GuideLine

?GuideLine是分隔線驼鞭,在實(shí)際的界面上不會(huì)顯示秦驯。

?定義時(shí)必須要的兩個(gè)屬性:

? ? ?android:orientation="vertical"

? ? ?app:layout_constraintGuide_percent="0.8"

? ?表示定義了一個(gè)豎直方向上的分隔線,它的位置在占據(jù)屏幕豎直方向80%的地方

? 一般會(huì)定義兩個(gè)GuideLine挣棕,在它們交匯的地方放置一個(gè)控件译隘,如:

圖2

紅色Button的左側(cè)有一條豎直的GuideLine,頂部有一條水平的GuideLine洛心,代碼為:

? ? 加了個(gè)自定義的drawable命名為"my_drawable"

順便復(fù)習(xí)下ShapeDrawable

(四)還有兩個(gè)屬性

app:layout_constraintVertical_bias=" " 和app:layout_constraintHorizontal_bias=" "

先看個(gè)效果:

圖3

? 代碼為:

? ? ? 圖3和圖2很像固耘,但最大的區(qū)別是它的位置比圖2要偏左上,實(shí)際是因?yàn)檎{(diào)用的屬性代表的都是80%的位置词身,只是圖2的中心點(diǎn)在兩個(gè)80%的交匯處厅目,而上圖2件的左上角的那個(gè)點(diǎn)在80%交匯處。

(五)??app:layout_constraintHorizontal_chainStyle

圖4

上圖代碼如下:

? ? ? 注意:這種效果的實(shí)現(xiàn)法严,首先需要把每一個(gè)控件的左右約束全部完成损敷,不能缺少,其次所有控件的寬度設(shè)置為0dp,再設(shè)置layout_constraintHorizontal_weight這個(gè)屬性深啤,如果layout_constraintHorizontal_weight這個(gè)屬性設(shè)置的不全為1拗馒,則哪個(gè)值大,相應(yīng)的控件就比較長(zhǎng)溯街。

把layout_constraintHorizontal_weight這個(gè)屬性換成:layout_constraintHorizontal_chainStyle="spread"也可以實(shí)現(xiàn)上圖效果诱桂。

當(dāng)3個(gè)控件的layout_width="wrap_content"時(shí),效果為:

圖5

? ? ?layout_constraintHorizontal_chainStyle還有其他屬性值可以選:當(dāng)值為"spread_inside"呈昔,且每一個(gè)控件的layout_width="wrap_content"時(shí)挥等,效果為:

圖6

當(dāng)layout_constraintHorizontal_chainStyle的值為"packed",且每一個(gè)控件的layout_width="wrap_content"時(shí)堤尾,效果為:

圖7

? ? ? packed的英文意思是打包触菜,所以3個(gè)控件都聚集在一起,spread是蔓延的意思哀峻,所以當(dāng)控件的寬度為0dp時(shí)涡相,每個(gè)控件都會(huì)努力占據(jù)整個(gè)屏幕,最終三個(gè)控件把整個(gè)界面占滿剩蟀,當(dāng)控件的寬度為wrap_content時(shí)催蝗,此時(shí)就像控件的gravity,把整個(gè)界面均分3份育特,每個(gè)控件都位于占據(jù)的空間的中間丙号,spread_inside則是在spread的基礎(chǔ)上先朦,左側(cè)的往左移,右側(cè)的往右移犬缨,中間的不變喳魏。


(六)? ?有時(shí)候界面上展示的控件是按比例來(lái)的,在以前的RL中怀薛,通常需要通過(guò)在代碼中設(shè)置控件的比例刺彩,現(xiàn)在可以通過(guò)app:layout_constraintDimensionRatio這個(gè)屬性,直接在布局文件設(shè)置控件的寬高比枝恋,如下圖:

圖8

代碼如下:

? ? ?app:layout_constraintDimensionRatio這個(gè)屬性的值設(shè)置為:"W创倔,24:1" 是指 " 寬:高=24:1 "所以看到橫向的那條textview,相應(yīng)的有H的就是" 高:寬 "焚碌,默認(rèn)情況下是"寬:高"畦攘。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市十电,隨后出現(xiàn)的幾起案子知押,更是在濱河造成了極大的恐慌,老刑警劉巖鹃骂,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件台盯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡偎漫,警方通過(guò)查閱死者的電腦和手機(jī)爷恳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門有缆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)象踊,“玉大人,你說(shuō)我怎么就攤上這事棚壁”兀” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵袖外,是天一觀的道長(zhǎng)史隆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)萄喳,這世上最難降的妖魔是什么亲族? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任煮甥,我火速辦了婚禮,結(jié)果婚禮上熔酷,老公的妹妹穿的比我還像新娘。我一直安慰自己豺裆,他們只是感情好拒秘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般躺酒。 火紅的嫁衣襯著肌膚如雪押蚤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天羹应,我揣著相機(jī)與錄音揽碘,去河邊找鬼。 笑死量愧,一個(gè)胖子當(dāng)著我的面吹牛钾菊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偎肃,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼煞烫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了累颂?” 一聲冷哼從身側(cè)響起滞详,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎紊馏,沒想到半個(gè)月后料饥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朱监,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年岸啡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赫编。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巡蘸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出擂送,到底是詐尸還是另有隱情悦荒,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布嘹吨,位于F島的核電站搬味,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蟀拷。R本人自食惡果不足惜碰纬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望问芬。 院中可真熱鬧悦析,春花似錦、人聲如沸愈诚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至酌泰,卻和暖如春媒佣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陵刹。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工默伍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衰琐。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓也糊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親羡宙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狸剃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容