美文网首页安卓基础
浅析 ViewStub 原理

浅析 ViewStub 原理

作者: 在岁月中远行 | 来源:发表于2022-04-30 21:24 被阅读0次

ViewStub更加轻量级,它本身是一个不可见的 View,资源消耗比较小,只有调用了ViewStub.inflate()的时候加载布局,布局才会实例化。

下面我们直接进行源码分析:

接下来分析setVisibility方法

通过上面的代码分析我们可以得出 setVisibility 最后调用的还是 inflate,所以这个方法才是关键

接下来看inflateViewNoAdd方法:

接着看replaceSelfWithView方法

最后总结一下:

ViewStub通过设置Gone以及设置宽和高都为0,以及setWillNotDraw(true)来达到自己不绘制不渲染的效果,其实就是占一个坑位意思。

ViewStub只能调用一次setVisibility方法,而setVisibility最后还是调用inflate方法,在replaceSelfWithView中indexOfChild代码中,如果ViewStub被移除了以后,index则是-1,那么addView的时候会抛出异常的。

相关文章

网友评论

    本文标题:浅析 ViewStub 原理

    本文链接:https://www.haomeiwen.com/subject/tioyyrtx.html