布局优化偏------------- include、merge 、ViewStub
来源:互联网 发布:angular.js介绍 编辑:程序博客网 时间:2024/05/30 07:14
<include />、<merge />、<ViewStub />
1、布局重用<include />
比如你有一个界面,在多地方用到,这样你就可以单独写一个xml,然后再要用的地方用include标签,
这样就大大节约了时间!
就是这么的方便!
1)<include />标签可以使用单独的layout属性,这个也是必须使用的。
2)可以使用其他属性。<include />标签若指定了ID属性,而你的layout也定义了ID,则你的layout的ID会被覆盖,解决方案。
3)在include标签中所有的Android:layout_*都是有效的,前提是必须要写layout_width和layout_height两个属性。
4)布局中可以包含两个相同的include标签,引用时可以使用如下方法解决(参考):
Viewview = findViewById(R.id.view1);
View view1 = view.findViewById(R.id.view1);
2、减少视图层级<merge />
3、“懒加载”<ViewStub />他的好处在于需要的时候才会加载
但ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性的控制。
首先来说说ViewStub的一些特点:
1. ViewStub只能Inflate一次,之后ViewStub对象会被置为空。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。
2. ViewStub只能用来Inflate一个布局文件,而不是某个具体的View,当然也可以把View写在某个布局文件中。
基于以上的特点,那么可以考虑使用ViewStub的情况有:
1. 在程序的运行期间,某个布局在Inflate后,就不会有变化,除非重新启动。
因为ViewStub只能Inflate一次,之后会被置空,所以无法指望后面接着使用ViewStub来控制布局。所以当需要在运行时不止一次的显示和隐藏某个布局,那么ViewStub是做不到的。这时就只能使用View的可见性来控制了。
2. 想要控制显示与隐藏的是一个布局文件,而非某个View。
因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。
所以,如果想要控制某个View(如Button或TextView)的显示与隐藏,或者想要在运行时不断的显示与隐藏某个布局或View,只能使用View的可见性来控制。
下面来看一个实例
在这个例子中,要显示二种不同的布局,一个是用TextView显示一段文字,另一个则是用ImageView显示一个图片。这二个是在onCreate()时决定是显示哪一个,这里就是应用ViewStub的最佳地点。
先来看看布局,一个是主布局,里面只定义二个ViewStub,一个用来控制TextView一个用来控制ImageView,另外就是一个是为显示文字的做的TextView布局,一个是为ImageView而做的布局:
为TextView的布局:
为ImageView的布局:
下面来看代码,决定来显示哪一个,只需要找到相应的ViewStub然后调用其infalte()就可以获得相应想要的布局:
运行结果:
使用的时候的注意事项:
1. 某些布局属性要加在ViewStub而不是实际的布局上面,才会起作用,比如上面用的android:layout_margin*系列属性,如果加在TextView上面,则不会起作用,需要放在它的ViewStub上面才会起作用。而ViewStub的属性在inflate()后会都传给相应的布局。
- 布局优化偏------------- include、merge 、ViewStub
- Android-布局优化(include , merge , ViewStub)
- Android 布局优化之include、merge、ViewStub
- 布局优化技巧--<include>/<merge>/<viewStub>
- android 布局优化标签<include/>、<merge />、<ViewStub />
- 使用include、merge、ViewStub优化布局
- Android之布局优化include、merge 、ViewStub
- 布局优化——include、merge 、ViewStub
- 安卓布局优化Include merge ViewStub
- Android布局优化之include、ViewStub、merge
- Android使用include/merge/ViewStub优化布局
- Android布局优化技巧--<include>/<merge>/<viewStub>
- 布局优化:使用include、merge、ViewStub
- Android 布局优化 include,merge,viewstub标签
- Android布局的优化-include、merge、ViewStub
- include、ViewStub、merge优化布局标签
- Android布局优化——抽象布局:include、merge 、ViewStub
- Android:布局include、merge 、ViewStub
- Android Nougat多窗口简析
- PHP-单例模式
- [vijos1028] 魔族密码
- 向字符变量赋予整数
- PHP程序自杀
- 布局优化偏------------- include、merge 、ViewStub
- 虚拟机安装centos7后出现的问题
- C++初级主题--(4)引用
- [Android 开发工具] 网络抓包Charles
- JavaScript常用对象
- 用Spark Streaming+Kafka实现订单数和GMV的实时更新
- Adaboost算法
- CUDA从入门到精通
- setEnabled() 和 setClickable() 的区别