简介
public final class Space extends View
Space是一个轻量的View,可以在布局中被用来创建间隙,常用于布局优化。
介于可能很多人根本不知道Space的存在!所以稍微提一下它的使用场景,比如以下场景的右侧小三角,就可以使用Space:

在两个三角之间放置一个Space,两三角分别位于它的上下,控制它的高度就能控制三角之间的间隔。
1 | <RelativeLayout |
构造方法分析
看第一个构造方法即可。
1 | // 最终都会调用这个构造方法 |
跟ViewStub类似,Space在构造方法里做了一些操作:当可见性为VISIBLE的时候,把它改为INVISIBLE了。
由于Space方法非常少,接下去直接都分析了。
其余方法分析
1 | /** |
Space跟ViewStub一个套路,draw()都为空方法,然后重写onMeasure,相比ViewStub,Space代码更加比较简单。
另外一般我们使用Space都是会指定宽高,大部分走的是 EXACTLY的流程。
要点
- Space 用来做间隙非常有用
- Space 默认为不可见(invisible),但是有宽高,会占据空间。
- 布局文件中设置 VISIBLE 无效。
小结
ViewStub跟Space作为Android布局优化的常用手段,有着一些同样的思路值得我们去学习:
- 不绘制(减少overDraw)
- 优化或者不参与测量与布局(提高整体布局的渲染速度)
总结来讲,Space 是一个不绘制任何东西,默认为INVISIBLE的 View,可以用来在布局中占空间,作布局优化。
推荐阅读
一步一步深入理解CoordinatorLayout
ViewStub是如何实现懒加载的
Space源码分析
LayoutInflater源码分析(一)之inflate深度分析