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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • virsh命令详解_lsattr命令详解

    virsh命令详解_lsattr命令详解virshhelp分组的命令:域管理(虚拟机实例管理)DomainManagement(helpkeyword’domain’):attach-device从一个XML文件附加装置attach-disk附加磁盘设备attach-interface获得网络界面autostart自动开始一个域

    2022年8月12日
    2
  • 简述物联网,云计算,大数据和人工智能的相互关系_物联网应用领域

    简述物联网,云计算,大数据和人工智能的相互关系_物联网应用领域我们在《互联网进化论》一书中提出“互联网的未来功能和结构将于人类大脑高度相似,也将具备互联网虚拟感觉,虚拟运动,虚拟中枢,虚拟记忆神经系统”,并绘制了一幅互联网虚拟大脑结构图。根据这一观点,我们尝试分析目前互联网最流行的四个概念————-大数据,云计算,物联网和移动互联网与传统互联网之间的关系。从这幅图中我们可以看出:物联网对应了互联网的感觉和运动神…

    2022年9月27日
    0
  • 史上最全的Android面试题集锦

    史上最全的Android面试题集锦Android基本知识点1、常规知识点1、Android类加载器在Android开发中,不管是插件化还是组件化,都是基于Android系统的类加载器ClassLoader来设计的。只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个Java源码文件会生成一个.class文件,而Android是把所有Class文件进行合并、优化,然后…

    2022年5月11日
    38
  • ps去除水印的六种方法_PS去水印方法

    ps去除水印的六种方法_PS去水印方法方法一:使用选框工具勾选水印部分:按住Shift+f5选择内容识别:然后ctrl+d取消选择,水印就去掉了PS:其实这个方法有个快捷办法,直接使用选框工具选中之后,按Delete就可以弹出

    2022年8月2日
    8
  • goland 2102激活(JetBrains全家桶)2022.01.26[通俗易懂]

    (goland 2102激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1TCF…

    2022年3月31日
    118

发表回复

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

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