zoukankan      html  css  js  c++  java
  • 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/>标识。 

  • 相关阅读:
    linux LTIB学习笔记
    wince WaitForMultipleObjects需要注意的问题
    微信小程序在苹果上出现[request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。]错误的解决方案
    Windows 2008之PKI实战4:吊销
    十个不找工作的理由
    [zt]我奋斗了18年不是为了和你一起喝咖啡
    [zt]Java/PHP/C 几种语言 RSA 的互操作
    全职共享和兼职的一些思考pkill
    定价策略(翻译稿)
    Windows 2008之PKI实战1:管理
  • 原文地址:https://www.cnblogs.com/riasky/p/3371980.html
Copyright © 2011-2022 走看看