Android介面布局一 約束布局

2021-09-24 04:03:54 字數 3085 閱讀 6224

原文:

一:新增依賴

引入我們的constraintlayout,在build.gradle中加入:

compile 'com.android.support.constraint:constraint-layout:1.0.2'
二:屬性介紹
layout_constraintright_toleftof:當前控制項的右邊位於指定控制項的左邊

layout_constraintright_torightof:當前控制項的右邊位於指定控制項的右邊

layout_constrainttop_totopof:當前控制項的上邊位於指定控制項的上

layout_constrainttop_tobottomof:當前控制項的上邊位於指定控制項的下

layout_constraintbottom_totopof:當前控制項的下邊位於指定控制項的上

layout_constraintbottom_tobottomof:當前控制項的下邊位於指定控制項的下

layout_constraintbaseline_tobaselineof:當前控制項的文字位於指定控制項的文字對齊

constraintlayout中已經不支援match_parent這個值了,你可以通過0配合約束實現類似的效果。

三、設定控制項寬高比

設定控制項寬高比,三種寫法都可以:

layout_constraintdimensionratio="16:6"

layout_constraintdimensionratio="h,16:6"

layout_constraintdimensionratio="w,6:16"

效果圖:

**實現:

四:設定按比例等分控制項

效果圖1:3個tab等分

實現方式:

效果1有兩種實現方式:

方式1:

3個tab兩兩設定了約束(即你在我們的左邊,我在你的右邊),最外層的設定了parent約束; 再加上我們把寬度都設定為了0,這樣我們就完成了3個tab等分。

方式2:

設定weight:分別設定控制項的weight和寬等於0實現:

android:layout_width="0dp"

layout_constrainthorizontal_chainstyle

3個tab兩兩設定了依賴,即類似下圖:

橫向的相當於組成了乙個鏈(chains)。在這個鏈的最左側的元素成為鏈頭,我們可以在其身上設定一些屬性,來決定這個鏈的展示效果:

該屬性為:

layout_constrainthorizontal_chainstyle
我們已經見過一種效果了,即按照weight等分,可以成為weighted chain。設定條件為:

chainstyle=」spread」
所有控制項寬度設定為match_constraint,因為預設就是spread,所以我們沒有顯示設定。

其取值還可以為:

spread + 寬度非0

spread + 寬度為0,且可以通過weight控制分配比例(上例)

spread_inside + 寬度非0

packed + 寬度非0

chain總結:

五:bias

可以理解為約束布局的拉力大小:如:

即表示水平位置在螢幕的90%的位置,垂直在y方向的90%位置

六、嘗試使用guideline

android.support.constraint.guideline該模擬較簡單,主要用於輔助布局,即類似為輔助線,橫向的、縱向的。該布局是不會顯示到介面上的。

所以其有個屬性為:

android:orientation取值為」vertical」和」horizontal」.
除此以外,還差個屬性,決定該輔助線的位置:

layout_constraintguide_begin

layout_constraintguide_end

layout_constraintguide_percent

可以通過上面3個屬性其中之一來確定屬性值位置。

begin=30dp,即可認為距離頂部30dp的地方有個輔助線,根據orientation來決定是橫向還是縱向。

end=30dp,即為距離底部。

percent=0.8即為距離頂部80%。

好了,下面看乙個例子,剛才我們的浮點按鈕,我決定通過兩根輔助線來定位,一根橫向距離底部80%,乙個縱向距離頂部80%,浮點按鈕就定位在他們交叉的地方。

android:id="@+id/guideline_h"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:id="@+id/guideline_w"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:layout_width="60dp"

android:layout_height="60dp"

android:background="#612"

Android約束布局

android約束布局問世已經有一段時間了,對於最初的一些開發者來說,早已習慣了相對布局或線性布局的使用,基本上可以滿足日常開發的需求。但是這樣一來,約束布局不就沒有它存在的意義了嗎。從谷歌官方資料來看,約束布局在某些情況下表現要高於線性布局以及相對布局。其特點是層級單一,所有控制項均處於同一層級。...

MySQL 新增唯一約束和聯合唯一約束

在mysql資料庫中,經常會碰到由於業務需要新增唯一鍵約束,唯一鍵約束,可以在乙個列上新增約束,也可以在多個列上新增唯一約束。1.建表時加上唯一性約束 create table t user id int 11 notnull auto increment username varchar 18 n...

建立唯一約束

唯一約束保證在乙個字段或者一組欄位裡的資料與表中其它行的資料相比是唯一的。建立唯一約束 在伺服器資源管理器中,選擇要將唯一約束新增到的表,再從 資料庫 選單中單擊 開啟表定義 該錶在 表設計器 中開啟。從 表設計器 選單中單擊 索引 鍵 在 索引 鍵 對話方塊中單擊 新增 在網格中單擊 型別 再從屬...