ViewStub使用
一、ViewStub是什么?
<ViewStub>
标签实质上是一个宽高都为 0 的不可见 的轻量级View。通过延迟按需加载布局的方式提升页面加载速度。
二、ViewStub使用场景
某布局默认是不可见,当满足特定场景才显示。比如网络异常提示、引导页等。
三、ViewStub怎么使用?
1、创建布局文件layout_test.xml(注:根标签可以是布局或控件,但不能为<merge>,子标签可以使用<merge>)
<TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="40dp"android:text="test"/>
2、通过ViewStub的android:layout指定懒加载的布局layout_test.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:text="测试" /><ViewStubandroid:id="@+id/viewStub"android:layout_width="match_parent"android:layout_height="300dp"android:layout="@layout/layout_test" />
</LinearLayout>
3、显示/隐藏布局
(1)只在满足条件进行显示
//方法1
viewStub.inflate()//方法2
viewStub.visibility = View.VISIBLE
注:ViewStub只能被Inflate一次,inflate之后ViewStub对象会被置空,就不能够再通过ViewStub来控制显隐。其中方法2内部也是通过调用inflate,所有ViewStub的setVisibility()和inflate()都只能调用一次
(2)需要根据条件进行显隐控制(通过ViewStub.inflate()返回的根布局进行显隐操作)
private var mIsVisiable = falseprivate val mView: View by lazy { viewStub.inflate() }override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)button.setOnClickListener {if (mIsVisiable){mView.visibility = View.INVISIBLE}else{mView.visibility = View.VISIBLE}mIsVisiable = !mIsVisiable}}
ViewStub使用相关推荐
- Android布局优化之include、merge、ViewStub
include:引入重复使用的相同布局 merge:减少include布局的层级,将子元素直接添加到merge标签的parent中 ViewStub:其实就是一个宽高都为0的一个View,它默认是不可 ...
- ViewStub 使用注意事项
学而时习之,温故而知新. ViewStub,它是一个看不见的.不占布局位置.占用资源非常小的视图对象. ViewStub的加载原理 ViewStub只能加载一次,重复加载会导致异常,这是因为ViewS ...
- Android抽象布局——include、merge 、ViewStub
在布局优化中,Androi的官方提到了这三种布局<include />.<merge />.<ViewStub />,并介绍了这三种布局各有的优势,下面也是简单说一 ...
- Android中使用ViewStub提高布局性能
2019独角兽企业重金招聘Python工程师标准>>> 注,关于Stub的解释:在Java中,桩(stub)是指用来代替关联代码或者未实现代码的代码. ViewStub使用场景 如上 ...
- 布局技巧:使用ViewStub
多亏了<include />标签,在Android里,很容易就能做到共享和重用UI组件.在Android开发中,很容易就能创建出复杂的UI结构,结果呢,用了很多的View,且其中的一些很少 ...
- include、ViewStub、merge优化布局标签
前言 在写Android的xml布局时,用好 include.ViewStub.merge这三个标签,可以是我们的xml更加简洁.高效. include 按照官方的意思,include就是为了解决重复 ...
- Android性能优化之一:ViewStub
Android性能优化之一:ViewStub 转载于:https://www.cnblogs.com/zhujiabin/p/5223196.html
- android 之ViewStub
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...
- java.lang.IllegalStateException: ViewStub must have a non-null ViewGroup viewParent
先贴问题 出现的原因: 在界面中添加了一个ViewStub控件 ,然后在代码中做了初始化 并初始化ViewStub中的A,B控件,之后在一个代码中的一个地方做了A,B控件的非空处理,在为空的时候重新调 ...
- 从源代码角度分析ViewStub 疑问与原理
一.提出疑问 ViewStub比較简单.之前文章都提及到<Android 性能优化 三 布局优化ViewStub标签的使用>.可是在使用过程中有一个疑惑,究竟是ViewStub上设置的參数 ...
最新文章
- ACMNO.16用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入 X 输出 X的
- 万字长文 | 23 个问题 TCP 疑难杂症全解析
- numpy逻辑运算符
- 电子科技大学计算机网络实验,计算机网络实验电子科技大学.doc
- (读书随笔)接口和抽象类的一些区别总结
- python def函数报错详解_Python函数详解
- 基于zeromq的高性能分布式RPC框架Zerorpc 性能测试
- Swift编程-闭包Closure
- 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第1节 网络通信概述_4_IP地址...
- 私服脚本制作教程......
- 几何平均数和调和平均数是什么?有什么作用?详细资料讨论他们的区别
- android微信连wifi设置,微信小程序实现连接wifi功能的方法
- Teredo Tunnel Adapter: Error Code 10
- 手机突然电量消耗很快_手机电量消耗快是什么原因(手机电池电量突然猛掉)...
- C# 及excel中【总体方差】、【样本方差】的计算公式
- 偶遇Chrome浏览器“喔唷,崩溃啦”,错误代码(STATUS_STACK_BUFFER_OVERRUN)
- 软件測试系列之入门篇(一)
- labview 和lin 通讯_LABVIEW几种通讯应用1
- php行业八卦,Phpwind肖睿哲:与网站主合作信任最重要
- Java接入PayPal教程,Spring boot Demo源码,企业账号注册,支付,回调,退款全流程,最新PayPal SDK
热门文章
- 无线局域网安全协议(WEP、WPA、WAPI)
- 机器人学导论 一、空间变换(1)位姿,变换
- html5通讯录源码,通讯录web版
- 利用VS2005进行dump文件调试
- java teechart怎么用_TeeChart for Java
- android iso系统下载 百度云,Windows 7 SP1官方原版ISO系统镜像所有版本下载集合
- cad黑色背景变成白色_学会了、让你前程似锦的CAD完整版教程
- 用Java实现【万年历】
- BT种子文件(.torrent)的具体文件结构
- 【antd-design-vue】a-table取消组件自带的暂无数据图片