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的原理及扩展
有错误,请指出,谢谢您!