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


相关推荐

  • ie里面兼容性视图设置在哪_chrome兼容性视图设置在哪里

    ie里面兼容性视图设置在哪_chrome兼容性视图设置在哪里ie8的兼容性视图设置:是在计算机配置页面的Windows组件选项里面。北京时间2008年3月6日,微软发布了InternetExplorer8的第一个公开测试版本(beta1)。本次测试第一次包涵简体中文(3月27日推出)版本。测试版本仍然是在IE7的架构下改进的。界面除了做一些细微的调整,增加少许实用功能外,并无改进。beta1版本推出了模拟IE7的模式、增加了在线邮件浏览功能、提高了兼容性…

    2025年10月3日
    2
  • 秒杀多线程第六篇 经典线程同步 事件Event

    秒杀多线程第六篇 经典线程同步 事件Event阅读本篇之前推荐阅读以下姊妹篇:《秒杀多线程第四篇一个经典的多线程同步问题》《秒杀多线程第五篇经典线程同步关键段CS》 上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的“线程所有权”特性所以关键段只能用于线程的互斥而不能用于同步。本篇介绍用事件Event来尝试解决这个线程同步问题。首先介绍下如何使用事件。事件Event实际上是个内核对象,它的使用非常方便。下面列出一些常用的函数。

    2022年7月15日
    12
  • 老电脑 升级 cpu性能排行 高性价比的cpu主板选择

    老电脑 升级 cpu性能排行 高性价比的cpu主板选择老电脑升级cpu性能排行高性价比的cpu主板选择4核ddr2ddr3

    2022年9月20日
    2
  • pycharm不支持32位系统怎么办_win10更新一直安装失败

    pycharm不支持32位系统怎么办_win10更新一直安装失败出现ThisinstallationcontainsJetBrainsRuntime11whichdoesnotsupportMicrosoftWindows32-bitversion.这个导致的原因是电脑操作系统是32位的,不支持Pycharm64位的软件安装,因此需要我们去下载一个Pycharm32位的软件版本。可以在https://www.jetbrains.com/pycharm/download/other.html这里进入,选择Pycharm低版本的,例如2018版本P

    2022年8月25日
    5
  • Linux抓包工具[通俗易懂]

    Linux抓包工具[通俗易懂]字符界面的的抓包工具—-tcpdump可用选项-A以ASCII格式打印出所有分组,并将链路层的头最小化。-c在收到指定的数量的分组后,tcpdump就会停止。-C在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数file_size的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。-d将匹配信息包的代码以人们能够理解的汇编格式给出。-dd将

    2022年10月14日
    6
  • pychram2021.11.3激活【2021免费激活】

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

    2022年3月28日
    58

发表回复

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

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