Android ConstraintLayout進(jìn)階:Guideline的使用及實(shí)例

ConstraintLayout進(jìn)階:Guideline的使用及實(shí)例

Android里的ConstraintLayout是個(gè)非常強(qiáng)大的工具,它有效的解決了Android里L(fēng)ayout的層級(jí)嵌套的問題博投。使用一個(gè)ConstraintLayout可以實(shí)現(xiàn)之前多個(gè)Layout才能實(shí)現(xiàn)的效果绸贡。

本篇文章就介紹下ConstraintLayout里比較進(jìn)階用法之一:Guideline。

Guideline介紹

Guideline是一種特殊的控件,它在界面上是看不見的(被標(biāo)記為View.Gone)听怕,只是用來做參考線捧挺。它一般有水平和垂直兩種。

Guideline的定位有兩種方法:
1.絕對(duì)定位:使用layout_constraintGuide_beginlayout_constraintGuide_end
2.百分比定位:使用layout_constraintGuide_percent

下面以兩個(gè)實(shí)例來說明Guideline的用法尿瞭。

使用Guideline實(shí)現(xiàn)控件對(duì)稱布局

假如闽烙,我們想要實(shí)現(xiàn)如下的效果,控件A和控件B声搁,在屏幕上對(duì)稱顯示黑竞。


兩個(gè)控件在屏幕上對(duì)稱顯示

如果不用ConstraintLayout,至少要嵌套兩級(jí)的Layout才能實(shí)現(xiàn)酥艳。而用ConstraintLayout里的Guideline摊溶,可以很容易的實(shí)現(xiàn)這種效果爬骤。

在這個(gè)例子里充石,我們可以先定義一個(gè)垂直的Guideline,然后用這行代碼layout_constraintGuide_percent="0.5"讓Guideline垂直居中:

 <android.support.constraint.Guideline
        android:id="@+id/guide"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.5"/>

然后以這根Guideline為基準(zhǔn)霞玄,左右各constraint一個(gè)控件骤铃,注意這兩行代碼app:layout_constraintRight_toLeftOf="@id/guide"app:layout_constraintLeft_toRightOf="@id/guide"

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="確定"
        app:layout_constraintRight_toLeftOf="@id/guide"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="200dp"
        android:layout_marginRight="50dp"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消"
        app:layout_constraintLeft_toRightOf="@id/guide"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="200dp"
        android:layout_marginLeft="50dp"/>

效果如下圖,在App真正運(yùn)行的時(shí)候坷剧,中間那根線是看不見的惰爬。


對(duì)稱效果

使用Guideline實(shí)現(xiàn)按百分比定位控件

假如我們要在屏幕上顯示一行字,這行字距離屏幕上邊緣200dp惫企。這個(gè)效果雖然很容易實(shí)現(xiàn)撕瞧,但是,因?yàn)楝F(xiàn)實(shí)中安卓手機(jī)的屏幕分辨率的差異狞尔,不同的手機(jī)上顯示的效果可能會(huì)不同丛版。比如,在屏幕比較長的手機(jī)上偏序,感覺下面會(huì)比較空页畦。如下圖:

如果按照絕對(duì)定位的方法,不同分辨率的手機(jī)效果會(huì)不同

使用Guideline可以解決這個(gè)問題研儒,因?yàn)镚uideline支持百分比的定位豫缨。
首先,新建一個(gè)水平Guideline端朵,設(shè)置為距離上邊緣30%:app:layout_constraintGuide_percent="0.3"

<android.support.constraint.Guideline
        android:id="@+id/guide"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.3" />

然后控件根據(jù)這個(gè)Guideline來定位好芭,注意這句app:layout_constraintTop_toBottomOf="@id/guide"

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="這行文字距離上邊緣30%"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/guide"
        android:textSize="30sp"/>

最終的效果是這樣的:


使用百分比的效果

因?yàn)槭褂昧税俜直葋矶ㄎ唬阅芨玫倪m配不同分辨率冲呢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末舍败,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓤湘,老刑警劉巖瓢颅,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弛说,居然都是意外死亡挽懦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門木人,熙熙樓的掌柜王于貴愁眉苦臉地迎上來信柿,“玉大人,你說我怎么就攤上這事醒第∮嫒拢” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵稠曼,是天一觀的道長形病。 經(jīng)常有香客問我,道長霞幅,這世上最難降的妖魔是什么漠吻? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮司恳,結(jié)果婚禮上途乃,老公的妹妹穿的比我還像新娘。我一直安慰自己扔傅,他們只是感情好耍共,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猎塞,像睡著了一般试读。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邢享,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天鹏往,我揣著相機(jī)與錄音,去河邊找鬼骇塘。 笑死伊履,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的款违。 我是一名探鬼主播唐瀑,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼插爹!你這毒婦竟也來了哄辣?” 一聲冷哼從身側(cè)響起请梢,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎力穗,沒想到半個(gè)月后毅弧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡当窗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年够坐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崖面。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡元咙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巫员,到底是詐尸還是另有隱情庶香,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布简识,位于F島的核電站赶掖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏财异。R本人自食惡果不足惜倘零,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戳寸。 院中可真熱鬧,春花似錦拷泽、人聲如沸疫鹊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拆吆。三九已至,卻和暖如春脂矫,著一層夾襖步出監(jiān)牢的瞬間枣耀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工庭再, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捞奕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓拄轻,卻偏偏與公主長得像颅围,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恨搓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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