一、思维导图
二、重述知识
上面这些是比较“大型”的控件,之后的课程会讲到。
这节就讲了五大布局,不过其实常用的就三种:
- LinearLayout
- RelativeLayout
- FrameLayout
三、具体应用场景
不需要细说了,那些控件都要放在布局上,太常用了。
四、扩展理解
1. LinearLayout (线性布局)
- LinearLayout会将它的子控件排列为一行或者一列,默认是水平方向;
- 在XML文件中,用
android:orientation="horizontal"
或者android:orientation="vertical"
这两个属性来设置按水平还是垂直排列; - 有“weight”和“weightSum”的概念;
- 要么横向,要么纵向。
2. RelativeLayout (相对布局)
- RelativeLayout 是通过内部子元素指定它们相对于其他元素或父元素相对位置(通过ID指定)关系来构造用户界面的布局方式。
- 就是可以相对于“别人”、“空间”或“空间某地”来定位
特别要注意,使用相对布局要避免一种叫"circular dependency"的情况!
大概就是,你RelativeLayout的尺寸跟里面子元素的位置,不要有相互依赖的关系。
例如,你不能把RelativeLayout的高设为WRAP_CONTENT,
然后它里面又有个子元素的位置设为ALIGN_PARENT_BOTTOM。
这就会产生类似下面的情况:
RelativeLayout领导:“活动场地定多大啊?”
Button小弟们:“听领导的,我坐最后一排就行啦。”
RelativeLayout领导:“我还是看你们的意思定吧。”
……
最后就是“你眼望我眼”,两边都不合适。
这个"circular dependency"是我遇到的一个坑,可能会另外写一篇博文来说说。
另外还要注意,在 version 17和更低版本,RelativeLayout会被一个关于测量尺寸的bug影响,导致被测量子元素值错误的情况。
version 18和以上版本已经修复这个问题。大概是这个情况,因为我自己还没遇过,不展开了,具体看RelativeLayout官网的介绍吧。
还是要自己上机才行,之后再写另一篇博文贴一下具体位置吧。
margin与padding:
- margin:该控件相对于父组件的边距,“外”边距。
- padding:该控件周边向内挤的边距,“内”边距。
3. FrameLayout (帧布局)
- 把控件一层层地进行叠加。
- 没有任何定位方式,所有控件都会摆放在布局的左上方。
其他
- Android res资源文件夹下的所有文件不能有大写字符,如果出现大写字符会导致R.java无法生成;
- xmlns:android="http://schemas.android.com/apk/res/android ",先记住是命名空间就行了,更多的参考《XML namespace in Android》这篇文章吧。
五、核心代码或操作
这里直接用《第一行代码》那个实例作为操作吧。
六、相关面试题
待补充。
七、脑内记忆
待补充。