当前位置: 首页 > news >正文

(转) Android中ViewStub组件使用

1. 概述:

 

    ViewStub组件和<include>标签的作用类似,主要是为了提高布局的重用性,及布局的模块化。它们之间最大的差别 是,ViewStub中的布局不会随着它所在布局的渲染而渲染,而<include>标签中的布局会随着它所在布局的渲染而渲 染,ViewStub中的布局只有在你需要的时候才会渲染到主界面中。

 

2. 效果图:

 

   (1)在ButtonOne与ButtonTwo之间存在一个ViewStub布局,如下图:

 ViewStub1

   (2)单击ButtonOne后渲染ViewStub中的布局,如下图:

ViewStub2

3. 实现代码:

 

    (1)res/layout/main.xml实现:

[java:firstline[1]] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"  
  4.     android:orientation = "vertical"  
  5.     android:layout_width = "fill_parent"  
  6.     android:layout_height = "fill_parent"  
  7.     >  
  8.       
  9.     <Button  
  10.         android:id = "@+id/show"  
  11.         android:text = "ButtonOne"  
  12.         android:layout_width = "wrap_content"  
  13.         android:layout_height = "wrap_content"  
  14.         />  
  15.       
  16.     <ViewStub  
  17.         android:id = "@+id/viewStub"  
  18.         android:layout = "@layout/green_layout"  
  19.         android:layout_width = "300dip"  
  20.         android:layout_height = "300dip"  
  21.         />  
  22.           
  23.     <Button  
  24.         android:layout_width = "wrap_content"  
  25.         android:layout_height = "wrap_content"  
  26.         android:text = "ButtonTwo"  
  27.         />  
  28.       
  29. </LinearLayout>  

 

 

    (2)main.xml中ViewStub组件里的布局实现:

[java:firstline[1]] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <LinearLayout  
  4.     xmlns:android = "http://schemas.android.com/apk/res/android"  
  5.     android:layout_width = "match_parent"  
  6.     android:layout_height = "match_parent"  
  7.     android:background = "@color/green">  
  8.       
  9. </LinearLayout>  

 

 

    (4)主Activity实现:

[java:firstline[1]] view plain copy
  1. package com.focus.fishme;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.view.ViewStub;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9.   
  10. public class ViewStubActivity extends Activity {  
  11.       
  12.     private ViewStub mViewStub;  
  13.       
  14.     private Button mShow;  
  15.       
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.   
  21.         mViewStub = (ViewStub) findViewById(R.id.viewStub);  
  22.           
  23.         mShow = (Button) findViewById(R.id.show);  
  24.         mShow.setOnClickListener(new OnClickListener() {  
  25.             public void onClick(View view) {  
  26.                 if (mViewStub != null) {  
  27.                     mViewStub.inflate();  
  28.                 }  
  29.             }  
  30.         });  
  31.     }  
  32.       
  33. }  

 

相关文章:

  • C++ 构造函数与析构函数
  • MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序...
  • C++ this指针 与 类的继承
  • OpenGL_Qt学习笔记之_07(闪烁的星星)
  • C++ 继承机制中的构造器与析构器
  • C#数组
  • C++ 访问控制
  • ASA842配置内网DNS欺骗测试
  • C++ 覆盖方法与重载方法
  • Ubuntu 12.04 ping 响应慢
  • C++ 静态属性和静态方法
  • C++ this指针与静态属性的关系
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • C++ new和delete动态分配和释放内存
  • C++ 类对象与类指针(静态和动态多态)
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • happypack两次报错的问题
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java的Interrupt与线程中断
  • k8s如何管理Pod
  • Linux Process Manage
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Magento 1.x 中文订单打印乱码
  • magento 货币换算
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • React组件设计模式(一)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue 动态创建 component
  • vue总结
  • 大主子表关联的性能优化方法
  • 计算机在识别图像时“看到”了什么?
  • 前端面试题总结
  • 我有几个粽子,和一个故事
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​低代码平台的核心价值与优势
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (C++17) std算法之执行策略 execution
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (八)Spring源码解析:Spring MVC
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (待修改)PyG安装步骤
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)ObjectiveC 深浅拷贝学习
  • .“空心村”成因分析及解决对策122344
  • .Net core 6.0 升8.0
  • .Net Web窗口页属性
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /etc/fstab和/etc/mtab的区别
  • @RequestBody与@ResponseBody的使用
  • [100天算法】-实现 strStr()(day 52)
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [Android]How to use FFmpeg to decode Android f...
  • [C#][DevPress]事件委托的使用