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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • PLSQL developer使用技巧「建议收藏」

    PLSQL developer使用技巧「建议收藏」1.调整字体PLSQLDeveloper的默认字体是大小是小五,看起来比较小。我们可以通过以下方式将字体改编为五号字体。工具-首选项-用户界面-字体-浏览器(编辑器、表格)-选择-大小五号。2.文本替换文本替换可以极大提高我们敲写SQL的效率。替换方式如下:工具-首选项-用户界面-编辑器-自动替换-选择文件如下,提供一个简单的模板。sf

  • 消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?

    消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?

    2020年11月20日
  • declare命令的用法_robo3t连接mongodb

    declare命令的用法_robo3t连接mongodbLinuxdeclare命令用于声明shell变量。declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),在第二种语法中可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行type来自:http://man.linuxde.net/declaretype来自:http://m

    2022年10月31日
  • 国外最流行的Bootstrap后台管理模板

    国外最流行的Bootstrap后台管理模板工欲善其事,必先利其器对于从事软件开发的您也一样,有一套熟悉的bootstrap后台ui框架让您的开发速度大幅度提升这是本人经常使用到的一些bootstrap后台框架推荐给大家第一名inspiniabootstrap演示地址http://cn.inspinia.cn效果图http://cn.inspinia.cnhttp://cn.inspinia.cn第二名…

  • allegro16.6转pads9.5实战攻略

    allegro16.6转pads9.5实战攻略1)要建立两个用户变量(如已存在,不需要建立) 。AEX_BIN_ROOTD:\MentorGraphics\9.5PADS\SDD_HOME\translators\win32\bi

  • wireshark解析tcp报文的内容_wireshark解析vxlan

    wireshark解析tcp报文的内容_wireshark解析vxlan在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN,FIN,ACK,PSH,RST,URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连…

发表回复

您的电子邮箱地址不会被公开。

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