首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ViewStub与View.GONE

是Android开发中与视图相关的两个概念。

  1. ViewStub(视图存根)是一个轻量级的视图,它可以在需要时延迟加载。它在布局文件中作为一个占位符存在,当需要显示该视图时,可以通过调用inflate()方法将其替换为实际的视图。ViewStub的主要作用是优化布局的加载性能,避免一次性加载过多的视图,提高应用的响应速度。

ViewStub的分类:

  • 静态ViewStub:在布局文件中定义,可以通过findViewById()方法获取引用并进行操作。
  • 动态ViewStub:在代码中动态创建,可以通过代码控制其显示和隐藏。

ViewStub的优势:

  • 轻量级:ViewStub本身不占用过多的内存资源。
  • 延迟加载:只有在需要显示时才会加载实际的视图,减少了布局的加载时间。
  • 简化布局:可以将复杂的布局拆分成多个ViewStub,提高布局的可读性和维护性。

ViewStub的应用场景:

  • 延迟加载:当一个视图在初始状态下不需要显示,但在特定条件下需要显示时,可以使用ViewStub进行延迟加载,提高应用的性能。
  • 动态布局:当需要根据不同的条件动态改变布局结构时,可以使用ViewStub来替换不同的视图。

推荐的腾讯云相关产品和产品介绍链接地址:

  1. View.GONE是Android中的一个视图状态,表示该视图在布局中不可见且不占用空间。与View.INVISIBLE不同,View.GONE会使得该视图在布局中完全消失,不占用任何空间。

View.GONE的特点:

  • 不可见:该视图在布局中不可见,不会显示在屏幕上。
  • 不占用空间:该视图不会占用任何空间,其他视图会自动填充其位置。

View.GONE的应用场景:

  • 动态隐藏:当需要根据特定条件动态隐藏某个视图时,可以将其设置为View.GONE,以节省布局空间。
  • 布局优化:当某个视图在特定情况下不需要显示时,可以将其设置为View.GONE,避免占用过多的布局空间。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ViewStub总结

ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View; 其特性如下: 1、调用其inflate()的时候,其布局属性android...:layout=”@layout/布局”将会替换这个ViewStub标签,这个时候我们使用findViewById将获取这个ViewStub对象为空,所以是可以被替换这一点的; 2、inflate(...)加载会返回一个View,这个View就是其layout属性对应的那个View,inflate()这个方法只能调用依次,如果再次调用会报ViewStub must have a non-null ViewGroup...viewParent这个错误,我们通过其getParent()判断是否为空,我们就可以知道是否已经加载了; 3、ViewStub的属性在inflate()后会都传给相应的布局。...4、我们ViewStub里面有一个inflateId:,这个是可以给ViewStub要加载的布局重新设置一个id,我们通过这个id可以通过使用findViewById来找到相应的布局; 5、 ViewStub

24230

android 之ViewStub

那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。...虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。      ...可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub...想要控制显示隐藏的是一个布局文件,而非某个View。               因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。     ...所以,如果想要控制某个View(如Button或TextView)的显示隐藏,或者想要在运行时不断的显示隐藏某个布局或View,只能使用View的可见性来控制。

71490

ViewStub延迟加载

在项目中,难免会遇到这种需求,在程序运行时需要动态根据条件来决定显示哪个View或某个布局,最通常的想法就是把需要动态显示的View都先写在布局中,然后把它们的可见性设为View.GONE,最后在代码中通过控制...但是它的缺点就是,耗费资源,虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。...使用时可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时或调用了ViewStub.inflate()的时候,ViewStub...4.3中所讲到的ViewStub指向的布局文件解析inflate并替换掉当前ViewStub本身,并不是完全意义上的替换(include标签不太一样),替换时,布局文件的layout params是以..., Toast.LENGTH_SHORT).show(); } }); } else { mViewStub.setVisibility(View.GONE

1.6K10

Android实战技巧:ViewStub的应用

那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。...虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。...可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub...想要控制显示隐藏的是一个布局文件,而非某个View。 因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。...所以,如果想要控制某个View(如Button或TextView)的显示隐藏,或者想要在运行时不断的显示隐藏某个布局或View,只能使用View的可见性来控制。

22020

ViewStub和Gone区别

虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。...可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候, 或是调用了ViewStub.inflate()的时候,ViewStub...但ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性的控制。...(1.)android.view.ViewStub特点: 1.ViewStub只能Inflate一次,之后ViewStub对象会被置为空。...2.想要控制显示隐藏的是一个布局文件,而非某个View。 因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。

23030

viewstub 的详细用法_pageinfo用法

那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。...虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。...想要控制显示隐藏的是一个布局文件,而非某个View。 因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。...所以,如果想要控制某个View(如Button或TextView)的显示隐藏,或者想要在运行时不断的显示隐藏某个布局或View,只能使用View的可见性来控制。...5.3中所讲到的ViewStub指向的布局文件解析inflate并替换掉当前 ViewStub本身,并不是完全意义上的替换(include标签还不太一样),替换时,布局文件的layout params

3.5K40

Android在layout xml中使用ViewStub完成动态加载问题

那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。...虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。...可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub...想要控制显示隐藏的是一个布局文件,而非某个View。 因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。...所以,如果想要控制某个View(如Button或TextView)的显示隐藏,或者想要在运行时不断的显示隐藏某个布局或View,只能使用View的可见性来控制。

1.7K31

ViewStub的使用

今天写一下 ViewStub ,内容很简单! ViewStub 是一个不可见的,没有尺寸,不会绘制任何东西的布局。...在 ViewStub 加载完成后就会被移除,它所占用的空间就会被新的布局替换。还是来说一下具体的用法,比较清晰。 用法 // 在布局文件中,你就当做普通 View 使用即可 <?...android:layout_width="match_parent" android:layout_height="300dp" // 当 ViewStub...加载后,就会被下面这个布局占用 android:layout="@layout/activity_main"/> 加载 ViewStub 的时候可以使用方法...一旦调用上面的方法后 ViewStub 就会变成 null 了。 应用场景 页面本身有一个布局,当由于某些错误,这个布局不加载的时候,这个时候你就可以让 ViewStub 加载你预留的空白布局了。

41720

Android实现加载状态视图切换效果

如何实现的步骤 1).先看看状态管理器类【builder建造者模式】 loadingLayoutResId和contentLayoutResId代表等待加载和显示内容的xml文件 几种异常状态要用ViewStub...,因为在界面状态切换中loading和内容View都是一直需要加载显示的,但是其他的3个只有在没数据或者网络异常的情况下才会加载显示,所以用ViewStub来加载他们可以提高性能。...; final ViewStub emptyDataVs; final int emptyDataRetryViewId; final ViewStub errorVs; final int errorRetryViewId...{ private Context context; private int loadingLayoutResId; private int contentLayoutResId; private ViewStub...= View.GONE) { valueView.setVisibility(View.GONE); if(mStatusLayoutManager.onShowHideViewListener !

98431

Android布局技巧之include、mergeViewStub标签的巧用

相信大家经常听到include、merge、ViewStub这样的标签,官方也提到这三种布局可用于布局的优化。今天就介绍下这三种布局的使用,记录下来,便于后续app中的使用。...ViewStub按需加载 按需加载 顾名思义需要的时候再去加载,不需要的时候可以不用加载,节约内存使用。...比如app中页面里某个布局只需要在特定的情况下才显示,其余情况下可以不用加载显示,这时候可以使用ViewStub。 layout属性是需要加载布局 <?...ViewStub的inflate()方法只能被调用一次,一旦调用后,ViewStub将从视图中移除,被对应的layout布局取代,同时会保留ViewStub上设置的属性效果。...ViewStub viewstub = findViewById(R.id.viewstub); viewstub.inflate(); 这篇关于include、merge、ViewStub的使用就介绍到这里了

1K10

Android开发笔记(七十四)布局文件优化

ViewStub 在一个页面上根据不同条件展示不同的控件,我们常常会设置控件的可视属性,比如调用指定控件的setVisibility方法,若需展示则设置View.VISIBLE,若需隐藏则设置View.GONE...ViewStub类似一个简单的View,但具体布局由属性layout指定,并且在app加载UI时,ViewStub不显示界面内容,只有在代码中调用该控件的inflate方法,layout指定的布局才会展示...基于以上特性,ViewStub在提高布局性能上有几个特点: 优点:ViewStub在加载时只占用大约一个View控件的内存,不占用layout整个布局需要的内存; 缺点:ViewStub一旦调用inflate...下面是个布局中添加主题的例子: android:theme="@android:style/Theme.Dialog" 除了系统自带的主题样式,我们也可以在themes.xml中自定义主题,具体步骤自定义样式类似...从截图可以看到,windowFrame的覆盖区域包括窗口边框,且窗口对内半透明、对外不透明,而边框对外半透明。

1.2K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券