Android Developers:按需求加载视图

有时候你的布局可能需要使用较少的复杂视图。无论它们是项目详情,进度指示器,或者撤销信息,你能通过仅仅在视图被需要的时候加载的方式,来减少内存消耗和加快显示。

定义一个ViewStub

——————————————————————————————————————————————————————————————

viewStub是一个没有大小,在布局中不绘制或者不参与的轻量级视图。同样的,它便于在一个视图结构增加或删除。每个ViewStub仅需要包含android:layout属性来指定将被包含的布局。

下面的ViewStub被用于一个透明的进度条。它仅当新的项目正在被导入应用程序的时候可见。

<ViewStub 
    android:id="@+id/stub_import" 
    android:inflatedId="@+id/panel_import" 
    android:layout="@layout/progress_overlay" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" /> 

加载ViewStub布局

——————————————————————————————————————————————————————————————

当你想加载通过ViewStub指定的布局的时候,调用setVisiblity(View.VISIBLE)或者inflate()任一方法让它可见。

((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE); 
// or 
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate(); 

注意:inflate()方法返回完成填充的视图。所以如果你需要和这个布局交互,不需要调用findViewById()。

一旦可见/被填充,ViewStub元素不再是这个视图结构的一部分。它被被填充的布局取代,并且这个布局的根视图的ID被ViewStub的android:inflatedid属性指定。(andorid:id属性指定的ViewStub的ID仅仅到ViewStub布局可见/被填充之前有效。)

注意:ViewStub的一个缺点是现在它在布局中不支持<merge/>标识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值