Android移動應用開發指南之六種佈局詳解
LinearLayout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:dividerPadding="200dp" > <LinearLayout android:layout_width="100dp" android:layout_height="0dp" android:background="#ff0000" android:layout_weight="1" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#ff000000" /> <LinearLayout android:layout_width="100dp" android:layout_height="0dp" android:background="#ffff00" android:layout_weight="1" /> <LinearLayout android:layout_width="200dp" android:layout_height="00dp" android:layout_weight="1" android:background="#00ffff" /> </LinearLayout>
orientation設置排列方式
layout_weight設置權重(感覺和彈性盒子差不多)
RelativeLayout
顧名思義,相對元素佈局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" android:padding="10dp" > <RelativeLayout android:id="@+id/rl1" android:layout_width="100dp" android:layout_height="100dp" android:background="#ff0000" android:layout_centerInParent="true" /> <RelativeLayout android:layout_margin="0dp" android:layout_width="100dp" android:layout_height="100dp" android:background="#00ff00" android:layout_toLeftOf="@+id/rl1" /> </RelativeLayout>
FrameLayout
<?xml version="1.0" encoding="utf-8"?> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout android:layout_width="400dp" android:layout_height="400dp" android:background="#ff0000" /> <FrameLayout android:layout_width="300dp" android:layout_height="300dp" android:background="#ffff00" android:foreground="@drawable/a" /> <FrameLayout android:layout_width="200dp" android:layout_height="200dp" android:background="#00ff00"/> </FrameLayout>
簡單來說,就是可以疊一起的佈局
TableLayout
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:collapseColumns="" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第1個" /> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第一個" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第二個" /> </TableRow> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第一個" /> </TableRow> </TableLayout>
可以看成類似excel的表格一樣的佈局
通常結合< TableRow >一起使用
GridLayout
網格佈局
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:columnCount="3" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_row="0" android:layout_column="1" android:text="第一個" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第二個" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第三個" android:layout_columnSpan="3" /> </GridLayout>
可以看成TableLayout升級版?
ConstraintLayout
約束佈局
這個應該是最強的佈局瞭
創建佈局默認的就是這個瞭。
打開design模式,然後隨便拖幾個按鈕進去
點擊魔術棒建立約束。
ok完成佈局瞭。
代碼也自動生成好瞭:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="246dp" android:layout_marginTop="107dp" android:text="按鈕" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="172dp" android:layout_marginBottom="125dp" android:text="Button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="115dp" android:text="Button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
我們開個虛擬機運行一下:
隻能說,差不太多,微調一下差不多就能用瞭。
也能夠設置各個組件的屬性值顏色字體等等。
這用起來就像是墨刀一樣。
參考
https://www.bilibili.com/video/BV1Jb4y187C4/?p=25&spm_id_from=pageDriver&vd_source=f57738ab6bbbbd5fe07aae2e1fa1280f
總結
到此這篇關於Android移動應用開發指南之六種佈局的文章就介紹到這瞭,更多相關Android移動應用開發佈局內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Android studio六大基本佈局詳解
- Android 詳解沉浸式狀態欄的實現流程
- Androd 勇闖高階性能優化之佈局優化篇
- Android AS創建自定義佈局案例詳解
- Android嵌套線性佈局玩法坑解決方法