您的位置:首页 > 移动开发 > Android开发

Android中ViewStub组件

2015-10-10 13:48 447 查看
1. 概述:

 

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

 

2. 效果图:

 

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

 


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



3. 实现代码:

 

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

[java]
view plaincopy

<?xml version="1.0" encoding="utf-8"?>  
  
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"  
    android:orientation = "vertical"  
    android:layout_width = "fill_parent"  
    android:layout_height = "fill_parent"  
    >  
      
    <Button  
        android:id = "@+id/show"  
        android:text = "ButtonOne"  
        android:layout_width = "wrap_content"  
        android:layout_height = "wrap_content"  
        />  
      
    <ViewStub  
        android:id = "@+id/viewStub"  
        android:layout = "@layout/green_layout"  
        android:layout_width = "300dip"  
        android:layout_height = "300dip"  
        />  
          
    <Button  
        android:layout_width = "wrap_content"  
        android:layout_height = "wrap_content"  
        android:text = "ButtonTwo"  
        />  
      
</LinearLayout>  

 

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

[java]
view plaincopy

<?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:background = "@color/green">  
      
</LinearLayout>  

 

    (4)主Activity实现:

[java]
view plaincopy

package com.focus.fishme;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.view.View;  
import android.view.ViewStub;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
  
public class ViewStubActivity extends Activity {  
      
    private ViewStub mViewStub;  
      
    private Button mShow;  
      
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
  
        mViewStub = (ViewStub) findViewById(R.id.viewStub);  
          
        mShow = (Button) findViewById(R.id.show);  
        mShow.setOnClickListener(new OnClickListener() {  
            public void onClick(View view) {  
                if (mViewStub != null) {  
                    mViewStub.inflate();  
                }  
            }  
       
4000
 });  
    }  
      
}  

版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: