android学习---ViewStub惰性装载控件

ViewStub

简单示例

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- 静态的加载布局文件 -->

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/next" >
    </include>

    <!-- 动态的加载布局文件 -->

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FFCCDD" >

        <ViewStub
            android:id="@+id/stub"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout="@layout/next" >
        </ViewStub>

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="动态添加布局" >
        </Button>

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="动态隐藏布局" >
        </Button>
    </LinearLayout>

</LinearLayout>

next.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" >

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

main.java

package com.leaf.android;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewStub;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RatingBar;

public class Main extends Activity {

    private Button button1, button2;
    private ViewStub viewStub;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button1 = (Button) this.findViewById(R.id.button1);
        button2 = (Button) this.findViewById(R.id.button2);
        viewStub = (ViewStub) this.findViewById(R.id.stub);
        button1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // 表示填充动态布局
                View view = viewStub.inflate();
                LinearLayout layout = (LinearLayout) view;
                RatingBar bar = (RatingBar) layout
                        .findViewById(R.id.ratingBar1);
                bar.setNumStars(3);

            }
        });

        button2.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                viewStub.setVisibility(View.GONE);// 隐藏布局
            }
        });
    }
}

效果:

原文地址:https://www.cnblogs.com/lea-fu/p/3299573.html