Space
官网是这么介绍的:
Space 是一个轻量级的 View 子类,可用于在通用布局中创建组件之间的间距。
为什么说是轻量级呢,是因为Space的draw
方法是空的,也就是什么都不绘制,只有onMeasure方法测量宽高。
来看下源码:
public final class Space extends View {
/**
* Draw nothing.
*
* @param canvas an unused parameter.
*/
@Override
public void draw(Canvas canvas) {
}
//...
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(
getDefaultSize2(getSuggestedMinimumWidth(), widthMeasureSpec),
getDefaultSize2(getSuggestedMinimumHeight(), heightMeasureSpec));
}
}
复制代码
所以Space作用于组件之间的间距时,绘制效率更高,特别是在需要动态修改间距时,这点尤为体现。
比如你要动态修改组件的margin,如果用Space来当间距,只需要修改Space的宽度或高度即可,因为减少了绘制流程,所以比重绘其他组件更高效。