zoukankan      html  css  js  c++  java
  • 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);// 隐藏布局
                }
            });
        }
    }

    效果:

  • 相关阅读:
    Android中Alarm的机制
    String字符串操作--切割,截取,替换,查找,比较,去空格.....
    时间类(时间戳的各种转换成)
    android 常用时间格式转换代码
    Android时间戳与字符串相互转换
    Android时间对话框TimePickerDialog介绍
    一种基于Qt的可伸缩的全异步C/S架构server实现(一) 综述
    C++ overloading contructor
    特征生成
    Atitit.软件仪表盘(2)--vm子系统--资源占用监測
  • 原文地址:https://www.cnblogs.com/lea-fu/p/3299573.html
Copyright © 2011-2022 走看看