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


相关推荐

  • js 字符串截取(包含中英文)

    js 字符串截取(包含中英文)有一个项目中需要兼容ie6,在使用ztree中很难修改符合ie下面的字符截取样式,于是使用js方法来截取,字符串截取推荐使用: //截取字符串包含中文处理     //(串,长度,增加…)     functionsubString(str,len,hasDot){      varnewLength=0;    

    2022年6月6日
    52
  • python+pytorch_pytorch linear函数

    python+pytorch_pytorch linear函数损失函数之MSELoss

    2022年9月2日
    1
  • 前端低代码调研与总结

    近些年来,低代码的概念逐渐流行了起来,而低代码产品也越来越多的出现在我们的身边。低代码可以叫做可视化搭建,或者叫效能工具等等。像国外的Mendix,国内的宜搭、苍穹、简道云、amis等等。基于这种新型的开发方式,图形化的拖拉拽配置界面,并兼容了自定义的组件、代码扩展,确实在B端后台管理类网站建设中很大程度上的提升了效率。低代码平台能够高效且便捷,成本又低。就应用领域来讲已经很广泛了,例如营销领域,各种页面生产工具,非冰,乐高,宜搭,鲁班。还有电商类的公司都会给商家提供一个类似店铺装修的工具,小程序生产工具

    2022年4月13日
    43
  • android加载dex方法,android Dex文件的加载

    android加载dex方法,android Dex文件的加载上篇文章讲到了apk的分包,通过multidex构建出包含多个dex文件的apk,从而解决65536的方法数限制问题《AndroidDex分包》。在dalvik虚拟机上,应用启动时只会加载主dex文件,而从dex需要我们手动去加载,那么问题来了,如何手动加载一个dex文件?前面也提到了,使用DexClassLoader和PathClassLoader。DexClassLoader和PathCla…

    2022年6月27日
    73
  • Ubuntu修改密码长度太短或太简单解决「建议收藏」

    Ubuntu修改密码长度太短或太简单解决「建议收藏」在安装Ubuntu的时候建立的帐户sai,想把密码改成两个字母aa,方便输入。运行终端sai@xmomx:~$passwdsai更改sai的密码。(当前)UNIX密码:xx输入新的UNIX密码:aa重新输入新的UNIX密码:aa必须选择更长的密码输入新的UNIX密码:1234567重新输入新的UNIX密码:1234567Bad:newpassword…

    2022年9月1日
    0
  • Generic Host Process for Win32 Services Error

    Generic Host Process for Win32 Services Error原文:http://techblissonline.com/generic-host-process-for-win32-services-error/ AreyouusingWindowsXPSP2andencounteringGenericHostProcessforWin32ServicesError?Don’tworry.Wedohavese

    2022年10月12日
    0

发表回复

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

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