章节摘要:组件是砖,布局是骨架。本章把猜数字 App 的散乱控件排成有秩序的界面:LinearLayout 的线性与权重、RelativeLayout 的相对定位、ConstraintLayout 的约束思维、FrameLayout 的叠放与通用布局参数。四套容器一套比一套现代,选型判断是本章的暗线。
上一章结束时,App 的控件已经齐了,但全堆在屏幕左上角,丑得没法见人。本章跟着界面一步步"排队":先用 LinearLayout 把标题、输入框、按钮竖着排整齐——两分钟见效;想让表情图贴着结果文字、按钮沉底,LinearLayout 开始吃力,RelativeLayout 的相对定位登场;等界面复杂到要"标题在输入框上方 8dp、输入框与按钮同宽、表情图始终水平居中",就该用 ConstraintLayout 把这些关系一条条写成约束;最后 FrameLayout 收尾,负责叠放与占位。每引入一个容器,都是前一个在某类需求上撞了墙。
本章最重要的拐点发生在 4.3:前两种布局都在回答"控件排在哪",ConstraintLayout 回答的是"控件被什么拉住"。位置不是写死的坐标或相对邻居的偏移,而是一组可以缺省、可以偏置的约束。想通这一点,布局编辑器的蓝色链条就不再是玄学。第二个落点是层级意识:嵌套 LinearLayout 三层以上,测量成本与维护难度同时起飞,ConstraintLayout 的核心卖点正是用扁平层级替代嵌套。
四种容器的演进与选型:
骨架立起来了,但界面还是"哑巴"——点了没反应。第 5 章接上神经:事件监听机制、触摸与键盘处理、Toast 与 Snackbar 的反馈艺术。
拿一张任何 App 的截图做拆解练习是巩固本章最快的方式:先框出大的区域块,判断每块该用哪个容器,再数一数别人嵌套了几层、有没有压扁的空间。拆三个页面后你会发现,成熟项目的布局几乎都能用"最外层约束或线性、局部小组合线性、叠放区 Frame"三句话概括。可考核的知识点清单:用权重按比例分空间并解释 0dp 的配合、读懂 RelativeLayout 的 id 引用网、在 ConstraintLayout 里用约束加偏置定位、说明 barrier 与 chain 的适用场景、区分 margin 与 padding 及 gravity 与 layout_gravity、解释嵌套过深的性能代价——六条齐了,布局拼图就拼完整了。