从源码角度分析ViewStub 疑问与原理


一、提出疑问

    ViewStub比较简单,之前文章都提及到 《Android 性能优化 三 布局优化ViewStub标签的使用》,但是在使用过程中有一个疑惑,到底是ViewStub上设置的参数有效还是在其包括的layout中设置参数有效?如果不明白描述的问题,可以看下以下布局伪代码。
res/layout/main.xml
<LinearLayout >
    <ViewStub
        android:id="@+id/viewstub"
        android:layout_width="100dip"
          android:layout_marginTop="100dip"
        android:layout_height="wrap_content"
        android:layout="@layout/sub_layout"
        />
   
</LinearLayout>

res/layout/sub_layout.xml
<TextView
     android:layout_width="50dip"
     android:layout_marginTop="50dip"
     android:layout_height="wrap_content"
     android:text="ViewStub中包含的TextVeiw"/>

    上面的代码中width最终效果是100dip还是50dip?marginTop是100dip还是50dip?带着这个问题一起看下Android 5.0源码看看ViewStub原理。

    为了便于把ViewStub与其infalte()加载出来的android:layout视图做个区分,下文中针对前者统一命名“ViewStub视图”,后者命名“被 加载视图”,仅为了描述统一并不一定是专业名称。

二、分析ViewStub源码

    让ViewStub有两种方式一种是调用ViewStub.inflate() 另外一种是设置ViewStub.setVisibility(View.VISIBLE); 其实第二种方式依然是调用的infalte方法,可以看如下ViewStub源码。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值