viewsub的简单解释

参考:文章一文章二内有源码

viewsub 占位符般的存在

        <ViewStub
          android:id="@+id/viewstub"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginLeft="2dp"
           android:layout="@+layout/viewstublayout" //keyline
        </ViewStub>

加载布局时,此布局不加载只有在inflate()或setVisibility (VISIBLE | INVISIBLE) 才可见 看源码可知都是调用inflate()方法

 public void setVisibility(int visibility) {  
        if (mInflatedViewRef != null) {// 如果已经加载过则只设置Visibility属性  
            ....
        } else {// 如果未加载,这加载目标布局  
            super.setVisibility(visibility);  
            if (visibility == VISIBLE || visibility == INVISIBLE) {  
                inflate();// 调用inflate来加载目标布局  
            }  
        }  
    }  

how to use

public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button_extend:            //显示ViewStub控件内容
                View view = mViewStub.inflate();
                //不可拿着viewwsub直接操作 要使用下边的view
                LinearLayout linearLayout = (LinearLayout) view;
                break;
            case R.id.button_hide:                //隐藏ViewStub控件内容
                mViewStub.setVisibility(View.GONE);
                break;
        }
    }

注意:

(1)ViewStub对象只可以Inflate一次,之后ViewStub对象会被置为空。按句话说,某个被ViewStub对象指定的布局被Inflate一次之后,就不可以再次通过ViewStub对象来控制它了。
(2)ViewStub控件只能用来Inflate一个布局文件,而不能Inflate某个具体的View

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值