Android約束佈局到底為什麼香?

山有木xi發表於2020-12-20

ConstraintLayout是Android推出的一個佈局,其效能好,官方極力推薦使用ConstraintLayout來編寫佈局。其中文名字為約束佈局,ConstraintLayout和RelativeLayout似乎有很多相似的地方,但是ConstraintLayout更靈活,在適應螢幕大小變化方面更有優勢。官方文件中的說法是“ Constraint Layout的所有功能都可以直接從Layout Editor的視覺化工具獲得,因為layout API和Layout Editor是專門為彼此構建的。 因此,您可以透過拖放而不是編輯XML來完全使用約束佈局來構建佈局。 ”

或許有些人會想,RelativeLayout已經很香了,為什麼還要使用ConstraintLayout呢?

我們都知道,在佈局巢狀過多時就會出現一些效能問題。之前我們可以去透過RelativeLayout或者GridLayout來減少這種佈局巢狀的問題。現在,我們可以改用ConstraintLayout來減少佈局的層級結構。ConstraintLayout相比RelativeLayout,其效能更好,也更容易使用。

約束佈局,約束的佈局,那麼在這裡面,約束指的是什麼呢?

約束是此佈局的基本構建塊。 它將一個視窗小部件的定位點與另一個視窗小部件或父視窗小部件連線起來。 有多種約束條件可以操縱以建立響應式UI,它也可以更好地適應不同的螢幕尺寸。

在約束佈局中,確定view的位置,至少需要一個水平和垂直約束

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

這樣便得到一個垂直與水平居中的佈局

而約束佈局中這樣的寫法有哪些呢?

  • layout_constraintLeft_toLeftOf

  • layout_constraintLeft_toRightOf

  • layout_constraintRight_toLeftOf

  • layout_constraintRight_toRightOf

  • layout_constraintTop_toTopOf

  • layout_constraintTop_toBottomOf

  • layout_constraintBottom_toTopOf

  • layout_constraintBottom_toBottomOf

  • layout_constraintBaseline_toBaselineOf

  • layout_constraintStart_toEndOf

  • layout_constraintStart_toStartOf

  • layout_constraintEnd_toStartOf

  • layout_constraintEnd_toEndOf

這些屬性的值,可以是parent也可以是某個元件的id,也就是說,約束可以基於整體佈局,也可以居於某個元件進行約束

而約束於垂直和水平後的位置,則可以使用

app:layout_constraintVertical_bias="0.68"
app:layout_constraintHorizontal_bias="0.3"

來進行調節,數值為0~1

整體使用起來的感覺就是,真香

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2743769/,如需轉載,請註明出處,否則將追究法律責任。

相關文章