摘要:使用檢查依賴項,是否添加此依賴庫。起,官方的模板默認使用。效果如圖所示設置寬高比例當或者設置為時,還可以通過設置寬高比例。該比例默認表示的值。使用設置寬度和高度的比值來靈活設置的尺寸。這個屬性有點像中的屬性平分布局。
前言
Hi,大家好,看到標題后大家是不是一臉懵逼,這是啥?這小編搞事情?說好的六大布局咋又來個布局殺手?這就是咱們公眾號和其他公眾號的不同,我們并不是照本宣科的講解Android知識,而是將項目當中實際運用到的并且是好用的東西分享給大家,還等什么呢?趕緊開始我們的學習吧!!
引入簡介:約束布局(ConstraintLayout) 是一個ViewGroup,它的出現主要是為了解決布局嵌套過多的問題,以靈活的方式定位和調整View。
說明:本博文是以ConstraintLayout1.1.3為基礎編寫,不同的依賴版本有不同的屬性和方法,如果依照博文編寫demo發現編譯出錯,請自行研究更新版本的約束布局或者與博主版本保持一致。
使用:檢查依賴項,是否添加此依賴庫。
//Android Studio2.3起,官方的模板默認使用ConstraintLayout。更新gradle插件版本之后,創建項目已經自動依賴,如果是老項目想要使用約束布局依賴如此 dependencies { implementation "com.android.support.constraint:constraint-layout:1.1.3" }使用
在Android Studio2.3之后,創建一個layout文件,默認使用布局如下:
從上面發現有四個屬性:
layout_constraintBottom_toBottomOf="parent" //View下邊對齊parent底部 layout_constraintLeft_toLeftOf="parent" //View左邊對齊parent左邊 layout_constraintRight_toRightOf="parent" //View右邊對齊parent右邊 layout_constraintTop_toTopOf="parent" //View上邊對齊parent上邊
除此之外還有幾個其他的常用屬性,表示View之間的關系
layout_constraintBottom_toTopOf="parent" //View下邊對齊parent上邊 layout_constraintLeft_toRightOf="parent" //View左邊對齊parent右邊 layout_constraintRight_toLeftOf="parent" //View右邊對齊parent左邊 layout_constraintTop_toBottomOf="parent" //View上邊對齊parent下邊
注意:此處parent可以換成其他想要與之關聯的View的控件ID
模板中聲明了一個TextView,且處于屏幕中間。如何做到的呢?上面四個屬性顧名思義都指定了TextView與Parent(父布局)的關系,約束布局如果不指定水平和豎直方向的百分比,默認是50%,所以會居中。如果想要指定百分比使用如下屬性:(使用橫向比例需要指定左右關系,使用豎直比例需要指定上下關系)
layout_constraintHorizontal_bias="0.4" layout_constraintVertical_bias="0.5" 這里有人會問,按照設計圖的比例如何確定這個比例呢:這里有一個公式和描述是經過驗證的 1.bias值=子View左相關的長度/(子View左相關的長度+其右相關的長度) 2.bias值與左相關的長度是成正比的,增大bias值,子View的左相關總是隨之增長。至于控件具體往左往右移動,則視子View與關聯控件的哪邊相關。
無圖無真相,計算說明這么復雜,想要搞暈我?直接上圖!
所以我們知道:想要使用約束布局固定一個View的位置,需要通過其與目標View相對的距離、位置,且從上(top)左(left)下(bottom)右(right)至少三個方位來說明關系
設置百分比布局當 ConstraintLayout 子布局的寬或高設置為0dp時,可以對寬或高設置百分比
使用layout_constraintHeight_percent和layout_constraintWidth_percent屬性設置橫豎方向占比來確定寬度和高度,而不用具體尺寸,可以使用此屬性做一般View的屏幕適配。效果如圖所示:
設置寬高比例當 layout_width或者 layout_height設置為0dp時,還可以通過 layout_constraintDimensionRatio設置寬高比例。該比例默認表示 width:height的值。
使用layout_constraintDimensionRatio設置寬度和高度的比值來靈活設置View的尺寸。如果想要表示高度:寬度則可以配置屬性類似h,16:9的含義是 h:w=16:9 也可設置 w,9:16是一樣的。效果如圖所示:
強制約束當一個view的寬或高,設置成wrap_content時
實現效果如圖所示:
納尼,怎么回事,不是應該右邊不會超出父布局的么,我已經設置了layout_constraintRight_toRightOf="parent",這個就是設置了適應內容屬性后出現的問題,此時需要強制使用約束寬度的屬性 ,你會發現效果正常了。
app:layout_constrainedWidth="true"http://在btn2上添加此屬性控件鏈條(Chain)
可以通過 layout_constraintHorizontal_chainStyle或 layout_constraintVertical_chainStyle設置鏈式控件的樣式。這個屬性有點像 LinearLayout中的 weight 屬性平分布局。使用此屬性,通常是權重分配不滿足需求,但是又需要居中或者分配View的空間
先放一個官方解釋的示例圖
看完這個圖是不是還覺得一頭霧水,看起來很復雜的樣子?其實不然,在開發中靈活使用此屬性則能事半功倍且適配效果很好。使用此屬性之前,需要把你即將連成鏈條的View彼此之間建立關聯關系,水平方向則是控件彼此左右關聯,豎直方向則是上下關聯,每相鄰兩個View之間必須緊緊關聯ID。即是:將一個方向上的控件形成鎖鏈(相互依賴),默認屬性是spread
Spread Chain Spread Inside Chain//在btn1上配置 app:layout_constraintHorizontal_chainStyle="spread_inside" //左右靠邊,中間剩余Packed Chain
//在btn1上配置 app:layout_constraintHorizontal_chainStyle="packed" //三個控件彼此緊靠且整體居中Packed Chain with Basis
//在btn1上配置 app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_bias="0.9" //三個控件彼此緊靠且整體在橫方向設置比例處結語
由于文章篇幅有限,且實際項目中還沒有研究到更多更好用的新屬性,暫時就告一段落,后期還會有關約束布局的更多好的玩法推送給大家,如果有小伙伴發現更高效或者更實用的屬性,歡迎你們的留言,讓我們共同成長吧~
PS:如果還有未看懂的小伙伴,歡迎加入我們的QQ技術交流群:892271582,里面有各種大神回答小伙伴們遇到的問題哦~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76185.html
摘要:大殺器之性能剖析原文地址大殺器之性能剖析前言寫了幾噸代碼,實現了幾百個接口。功能測試也通過了,終于成功的部署上線了結果,性能不佳,什么鬼 Golang 大殺器之性能剖析 PProf 原文地址:Golang 大殺器之性能剖析 PProf 前言 寫了幾噸代碼,實現了幾百個接口。功能測試也通過了,終于成功的部署上線了 結果,性能不佳,什么鬼?
摘要:大家好,我是一行之前一行分享過好用的幾種編輯器,測試有沒有下載成功,用來做數據分析,開發的大殺器,等等,小眾猿群使用那在用這個開發大殺器的同時,一行也來分享幾個它很好用的插件,來給你的搬磚提提速可以作為摸魚好助手次下載 ...
過去我們讓AI說話,它給出的總是不咸不淡的機器合成聲音,毫無波瀾的死板音調讓人聽得昏昏欲睡。但由于chatTTS的到來,一切都將會變得不一樣。作為一款強大的對話式文本轉語音模型,它完美解決了用戶對于生動對話的需求。如此功能不可小覷,可以稱得上在業界一騎絕塵。對于短視頻內容創作,有聲小說配音,數字營銷推廣以及日常辦公,它都可以成為強有力的助手。此外,該項目還衍生出音色抽卡,長文本推理,角色扮演等功能...
閱讀 3222·2021-09-09 11:39
閱讀 1228·2021-09-09 09:33
閱讀 1127·2019-08-30 15:43
閱讀 546·2019-08-29 14:08
閱讀 1733·2019-08-26 13:49
閱讀 2376·2019-08-26 10:09
閱讀 1545·2019-08-23 17:13
閱讀 2283·2019-08-23 12:57