布局优化:使用include、merge、ViewStub

来源:互联网 发布:淘宝卖家违规怎么处理 编辑:程序博客网 时间:2024/06/05 00:18

1.include:

布局复用,使用layout=设置引用的布局。需要注意的是只支持android:id 和android:layout_xxx,而且要设置android:layout_xxx必须设置宽高,否则无效。


2.merge:

用于减少冗余的布局嵌套,相当于他包裹的内容直接放到他的父组件下(只能用作布局文件的根标签)。常用于include引用的布局文件,比如说原来有一个垂直线性布局,其中有一个include,引用的布局又是一个垂直线性布局。这时就没必要在引用的布局使用线性布局作为根布局,用merge就可以了。


3.ViewStub:

应用场景是刚开始不需要加载的布局内容(如网络断开界面),意义就是减少刚开始的加载时间。

这个组件刚开始不占空间,通过android:layout设置要加载的内容。再设置可见性或调用inflate后要加载的内容替换掉他显示,相应的空间弹开(像是gone到visible)。

一般要设置android:id和android:inlfateId,第一个就是他的ID,第二个是要加载的内容的ID。

使用:

vs= (ViewStub) findViewById(R.id.vs);                vs.setVisibility(View.VISIBLE);                //vs.inflate();第二种显示方式                View view1=findViewById(R.id.show);                TextView tv=(TextView) view1.findViewById(R.id.tv);

这里的show就是InflateId

待通知viewstub加载后再获取加载的view,并通过这个view的findViewById来获取其子组件。