PercentLayout
百分比布局,控制子view 在布局文件占用的大小,多適配方案的一種比較好的選擇。
擁有的屬性:
-
layout_widthPercent
和layout_heightPercent
寬、高 占比
-
layout_marginPercent
支持
margin
,設置邊距,該控件相對于父控件的邊距,使用起來更方便。 -
layout_marginStartPercent
和layout_marginEndPercent
距離開始和結束的位置
-
layout_aspectRatio
用于顯示寬高比例,很有用處,當指定了寬或高的一邊的長度或百分比后,會自動計算另一邊的長度;
例如當寬是match_percent
時,可指定寬高比,便不需要考慮屏幕的適配問題;注:
layout_aspectRatio
的數值可超過100%,例如150%。
需注意的地方
-
目前有兩種
PercentLayout
--->PercentRelativeLayout
與PercentFrameLayout
兩種。在第一個參考里,詳細說了具體的實現,及
PercentLayoutHelper
的作用- 將現有的組件支持百分比控制 child view 的寬和高
-
fetchWidthAndHeight()
方法 adjustChildren()
需要設置寬高占比時,需要同時設置
android:layout_width="0dp"
android:layout_height="0dp"
有時父view最大能提供的空間小于控件需要的空間,會給測量結構的高兩位加上相應的狀態表示
MEASURED_STATE_TOO_SMALL
, 會調用handleMeasuredStateTooSmall()
處理,將寬和高重新按照wrap_content
來測量。
寫在最后
PercentLayout
適用于在項目中適配多種機型問題,可對標準屏進行百分比布局,然后測試其他屏幕的時候,對特殊屏幕(會出現問題)進行特殊處理。
參考鏈接:percentLayout的原理及擴展
有錯誤,請指出,謝謝您!