在开发过程中,有时候,需要这样一种控件,正常情况下不可见,不占用任何布局空间,只在某种特定情况下显示,这种情况下,我们使用一个普通的View,利用设置setVisibility(View.GONE)自然也可以实现,但是这样的话即使我们不需要显示View,Android也会将这个View渲染出来,只不过不显示而已。如果我们不仅仅需要一个控件,而是一个layout呢?那么是不是Android将做更多的无用功呢?而ViewStub很好的避免了这个问题,默认情况下ViewStub是不显示的,不占用父控件任何空间,当设置成显示,或者调用inflate时,ViewStub将会被我们预先写好的布局文件替换。

用代码简单示例:

<ViewStub android:id="@+id/stub"
android:inflatedId="@+id/subTree"
android:layout="@layout/mySubTree"
android:layout_width="120dip"
android:layout_height="40dip" />

这是xml部分,就像一个普通控件放在你想放置的位置,而android:layout是设置当你调用inflate()或者setVisibility时替换这个ViewStub显示出来的layout,这个可以写在另一个文件里,默认情况是不渲染的

ViewStub stub = (ViewStub) findViewById(R.id.stub);
View inflated = stub.inflate();

当你第一次需要显示你要的内容时,才需要渲染他,调用inflate(),此时,你的ViewStub将从布局层级中消失,而取代他的是之前定义好的layout。因此,你不需要保持ViewStub的引用,因为那没有意义,同时ViewStub只能inflate一次。如果你之后想隐藏或再次显示,那么调用你的layout的setVisibility。

轻量级的惰性控件——ViewStub的更多相关文章

  1. Flutter 轻量级的ToolTip控件

    轻提示的效果在应用中是少不了的,其实Flutter已经准备好了轻提示控件,这就是toolTip. 轻量级操作提示 其实Flutter中有很多提示控件,比如Dialog.Snackbar和BottomS ...

  2. Slider.js轻量级图片播放控件

    Slider.js基于HTML5和CSS3实现的Slideshow 1.Slider.js 是一个图片播放Slideshow引擎,采用jQuery.CSS3和HTML5 canvas技术实现. 2.可 ...

  3. 轻量级流程图控件GoJS示例连载(一):最小化

    GoJS是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和 HTML5 Canvas程序中创建流程图,且极大地简化你的JavaScript / Canvas 程序. 慧都网小 ...

  4. HTML5优秀图表控件

    不管是哪个领域的开发,都有机会用到图表来做统计分析,以更直观的表现形式来代替传统的文字.在以前,图表控件主要有使用程序代码生成的静态图片,或者是使用flash实现的图表控件. 在HTML5非常流行的当 ...

  5. WPF下可编辑Header的Tab控件实现

    介绍 有这样一个需求,当用户双击Tab控件Header区域时, 希望可以直接编辑.对于WPF控件,提供一个ControlTemplate在加上一些Trigger就可以实现.效果如下: 代码 首先,我们 ...

  6. 【干货分享】JPager.Net MVC超好用轻量级分页控件

    JPager.Net  MVC好用的轻量级分页控件,好用到你无法想象,轻量到你无法想象. JPager.Net  MVC好用的轻量级分页控件,实现非常简单,使用也非常简单. JPager.Net  M ...

  7. Net MVC轻量级分页控件

    JPager.Net MVC超好用轻量级分页控件   JPager.Net  MVC好用的轻量级分页控件,好用到你无法想象,轻量到你无法想象. JPager.Net  MVC好用的轻量级分页控件,实现 ...

  8. [UWP]实现一个轻量级的应用内消息通知控件

    在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDialog.ContentDialog或者ToastNotification来完成功能. 但是,我们 ...

  9. 打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)

    前文描述: 随着.net  推出 MVC框架以来,webform 与 mvc 的争论一直没有停止过,一直以来 mvc 的 拥护者远远高于 webform,但是webfrom的有些优势又是mvc而无法替 ...

随机推荐

  1. Eclipse快捷键 之 代码追踪

    在使用Java编写复杂一些的程序时,你会不会常常对一层层的继承关系和一次次方法的调用感到迷惘呢?幸亏我们有了Eclipse这么好的IDE可以帮我们理清头绪--这就要使用Eclipse强大的代码追踪功能 ...

  2. Head First PHP &MySQL学习笔记

      最近一段时间在学习PHP,买了<Head First PHP&MySQL>中文版这本书,之前买过<Head First设计模式>,感觉这系列的书籍总体来说很不错. ...

  3. 转 jmeter 关联

    jmeter(十二)关联之正则表达式提取器   如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就是常说的关联/将上一个请求的响应结果作为下 ...

  4. Python-02 生成器表达式,列表推导式

    列表推导式和生成器表达式 列表推导式,生成器表达式1,列表推导式比较直观,占内存2,生成器表达式不容易看出内容,省内存. [ 变量(加工后的数据) for  变量i  in 可迭代的数据类型 ] 列表 ...

  5. 安装python及编辑工具PyCharm

    win10下安装python环境,安装编辑工具PyCharm 1.安装 pythonpython安装包下载地址https://www.python.org/ftp/python/3.8.0/pytho ...

  6. shell date 格式化

    https://www.tutorialkart.com/bash-shell-scripting/bash-date-format-options-examples/ DATE=`date '+%d ...

  7. 高德地图的权限Activity代码

    /** * */package com.amap.location.demo; import java.lang.reflect.Method;import java.util.ArrayList;i ...

  8. 1、Python 基础类型 -- Number 数字类型

    一.Number

  9. 6383. 【NOIP2019模拟2019.10.07】果实摘取

    题目 题目大意 给你一个由整点组成的矩形,坐标绝对值范围小于等于\(n\),你在\((0,0)\),一开始面向\((1,0)\),每次转到后面第\(k\)个你能看到的点,然后将这条线上的点全部标记删除 ...

  10. Android中查看当前Activity是否销毁

    进入到Android-sdk中platform-tools目录 在命令行中执行以下命令 adb shell dumpsys activity>activity.txt 可以将当前的四大组件(Ac ...