美文网首页安卓基础
浅析 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