ViewStub和Gone区别[通俗易懂]

ViewStub和Gone区别[通俗易懂]虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。   推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Infl

大家好,又见面了,我是你们的朋友全栈君。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。


也就是说,会耗费内存等资源。


    推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。


可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,


或是调用了ViewStub.inflate()的时候,ViewStub所向的布局就会被Inflate和实例化,然后ViewStub的布局属性都会传给它所指向的布局。


这样,就可以使用ViewStub来方便的在运行时,要还是不要显示某个布局。


    但ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性的控制。


(1.)android.view.ViewStub特点:


    1.ViewStub只能Inflate一次,之后ViewStub对象会被置为空。按句话说,某个被ViewStub指定的布局被Inflate后,


    就不会够再通过ViewStub来控制它了。


    2.ViewStub只能用来Inflate一个布局文件,而不是某个具体的View,当然也可以把View写在某个布局文件中。


基于以上的特点,那么可以考虑使用ViewStub的情况有:


    1.在程序的运行期间,某个布局在Inflate后,就不会有变化,除非重新启动。


    因为ViewStub只能Inflate一次,之后会被置空,所以无法指望后面接着使用ViewStub来控制布局。


    所以当需要在运行时不止一次的显示和隐藏某个布局,


    那么ViewStub是做不到的。这时就只能使用View的可见性来控制了。


    2.想要控制显示与隐藏的是一个布局文件,而非某个View。


    因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153978.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言开发ETL,【ETL开发工作内容|工作职责|ETL开发做什么】-看准网「建议收藏」

    c语言开发ETL,【ETL开发工作内容|工作职责|ETL开发做什么】-看准网「建议收藏」工具应用ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle、久其ETL……开源的工具有eclipse的etl插件:cloveretl数据集成:快速实现ETLETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括:业务系统不同时期…

    2022年6月5日
    34
  • 消息中间件有哪些

    消息中间件有哪些1 学习中间件的方式和技巧理解中间件在项目架构中的作用 以及各中间件的底层实现 可以使用一些类比的生活概念去理解中间件 使用一些主流图或者脑图的方式去梳理各个中间件在架构中的作用 尝试使用 Java 技术去实现中间件 静下来去思考中间件在项目中设计和使用的原因 如何找到对应的替代方案 尝试编写博客总结类同中间件技术的对比和使用场景 学会查看中间件的源码以及开源项目和博客 2 消息中间件的应用场景跨系统数据传递 高并发的流量削峰 数据的分发和异步处理 大数据分析与传递 分布式事务比

    2026年2月3日
    2
  • HDU1160(LIS)

    HDU1160(LIS)

    2022年1月9日
    43
  • OutOfMemoryError系列(1): Java heap space

    OutOfMemoryError系列(1): Java heap space本文通过实例来分析java.lang.OutOfMemoryError:Javaheapspace问题产生的原因,以及相关的解决方案

    2022年7月7日
    23
  • js判断属性是否存在(javascript的特点)

    参考一:vararray=[{‘yaxis’:22,’lines’:true},{‘lines’:true}]varisTrue=array.some(val=>{returnval.yaxis})if(isTrue===true){console.log(‘数组对象里面存在属性yaxis’)}1.使用in关键字。该方法可…

    2022年4月12日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号