在實際工作中,往往我們要進行屏幕適配,項目實戰的時候,我們需要從兩個方面進行操作:
:我們要支持各種屏幕尺寸。比如說,3寸,4寸,4.5寸以及5寸等。不一樣的尺寸,我們需要進行適配。
第二:就是對于不同的屏幕密度進行操作。比如說密度為150、180、200、300、甚至密度dpi更高的400、500規格的屏幕。
使用match_parent、wrap_content、weight
使用相對布局RelativeLayout
使用 自動拉伸布局
使用限定符
在控件中使用屬性 android:layout_weight=”1”可以起到適配效果,但是該屬性的使用有如下規則:
只能用在線性控件中,比如 LinearLayout。
豎直方向上使用權重的控件高度必須為 0dp(Google 官方的推薦用法)
水平方向上使用權重的控件寬度必須為 0dp(Google 官方的推薦用法)
備注
如果你不用0dp的話,
在layout_width設置為fill_parent的時候,layout_weight所代表的是你的控件要優先盡可能的大,但這個大是有限度的,即fill_parent.
在layout_width設置為wrap_content的時候,layout_weight所代表的是你的控件要優先盡可能的小,但這個小是有限度的,即wrap_content.
layout_height 同 layout_width.
具體可參考: http://blog.csdn.net/jincf2011/article/details/6598256
weight計算
計算出來的寬度 = 原來的寬度 + (屏幕寬度 - 所有組件之和) * (當前組件的weight / 所有組件的weight之和)
計算公式
2/3 = L+(L - 2l) * 1 /3
種情況:
layout_width=”fill_parent”, button1的weight=1,button2的weight=2;
第二種情況:
layout_width=”fill_parent”,button1的weight=1,button2的weight=2000;
第三種情況:
layout_width=”wrap_content”, button1的weight=1,button2的weight=2;
第四種情況:
layout_width=”wrap_content”, button1的weight=1,button2的weight=2;
linearLayout中包含有weight的child時,linearLayout會measure兩次。
推薦閱讀
從源碼切入 透徹理解Android的weight屬性
https://www.2cto.com/kf/201607/522371.html
簡單的布局一般都使用線性布局,而略微復雜點的布局,我們使用相對布局,大多數時候,我們都是使用這兩種布局的嵌套。
我們使用相對布局的原因是,相對布局能在各種尺寸的屏幕上保持控件間的相對位置。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。