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);// 隐藏布局
                }
            });
        }
    }

    效果:

  • 相关阅读:
    Codeforces Round #646 (Div. 2)【B. Subsequence Hate题解】
    关于MyBatis常见映射异常
    SQL语句汇总(终篇)—— 表联接与联接查询【转载自https://www.cnblogs.com/ghost-xyx/p/3813688.html】
    SQL语句汇总(二)——数据修改、数据查询【转载自https://www.cnblogs.com/ghost-xyx/p/3798362.html】
    浮动元素引起的问题和解决办法
    PHP 神奇的sprintf函数
    关于this,作用域,属性,原型链的一个小练习
    for...of 与 for...in 区别
    ES6 Promise对象then方法链式调用
    ES6通过WeakMap解决内存泄漏问题
  • 原文地址:https://www.cnblogs.com/lea-fu/p/3299573.html
Copyright © 2011-2022 走看看