【1-7】Android開發(fā)布局詳解

一、思維導圖

Android開發(fā)布局詳解

二、重述知識


上面這些是比較“大型”的控件,之后的課程會講到。

這節(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 (幀布局)

  • 把控件一層層地進行疊加。
  • 沒有任何定位方式,所有控件都會擺放在布局的左上方。

其他

五、核心代碼或操作

這里直接用《第一行代碼》那個實例作為操作吧。


六、相關面試題

待補充。

七、腦內記憶

待補充。

八、參考資料

  1. Android絕招一——利用weight屬性居中View
  2. The use of layout_weight with Android layouts
  3. XML namespace in Android
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容