注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

罔少年

QQ 332256483

 
 
 

日志

 
 

Android ViewStub  

2015-09-17 10:14:06|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
ViewStub轻量级容器
作用:类似<include>,引入xml布局文件
区别:在实例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">

<!-- 默认显示layout_log.xml 实例化layout_log.xml -->

<!-- 实例话include消耗内存高 -->
<include
android:id="@+id/include"
layout="@layout/layout_log"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<!-- 默认不显示layout_reg.xml,也不实例化layout_reg.xml -->
<!-- 实例话ViewStub消耗内存低 -->
<ViewStub
android:id="@+id/viewStub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/layout_reg" />

</LinearLayout>

ViewStub viewStub = (ViewStub) view.findViewById(R.id.no_data_viewstub);
//只能调用一次
viewStub.inflate();

看到这里,可能大家感觉云里雾里,不明白这个控件到底有何特殊
如果只是为了加载一个布局,可以用include,
如果为了一开始隐藏,那可以用View.GONE,而且可以重复显示隐藏

优点:
延迟加载,比如某些一开始不需要初始加载的布局。如果用include,设置隐藏的话,其实include包括引入的xml也都是实例化了的,消耗内存。而使用ViewStub的话,内部引入的xml是不加载的,只有在viewStub.inflate() 的时候,才实力话引入的xml

比如,在一个listView中,如果数据为空,那么不应该在显示listView,应该显示一个 数据为空的 view
之前做法就是在xml中,写一个<ListView>,<TextView>,然后通过View.Visible来控制2个控件显示隐藏,那么现在可以这么做:

public void showEmptyView() {
listview.setVisibility(View.GONE);
if (noDataView == null) {
ViewStub noDataViewStub = (ViewStub) view.findViewById(R.id.no_data_viewstub);
noDataView = noDataViewStub.inflate();
} else {
noDataView.setVisibility(View.VISIBLE);
}
}

public void showListView(){
listview.setVisibility(View.VISIBLE);
if(noDataView != null){
noDataView.setVisibility(View.GONE);
}
}






  评论这张
 
阅读(14)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017