一缘圈、思維導圖
二梆奈、重述知識
上面這些是比較“大型”的控件野崇,之后的課程會講到。
這節(jié)就講了五大布局亩钟,不過其實常用的就三種:
- 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資源文件夾下的所有文件不能有大寫字符礼搁,如果出現(xiàn)大寫字符會導致R.java無法生成;
- xmlns:android="http://schemas.android.com/apk/res/android "目尖,先記住是命名空間就行了馒吴,更多的參考《XML namespace in Android》這篇文章吧。
五瑟曲、核心代碼或操作
這里直接用《第一行代碼》那個實例作為操作吧饮戳。
六、相關面試題
待補充测蹲。
七莹捡、腦內記憶
待補充鬼吵。