android viewstub

转载地址:http://hualikejava.iteye.com/blog/1922039

利用ViewStub显示和隐藏布局 
ViewStub的引入: 
在开发的时候,有些布局是要根据条件而动态显示,达到一个布局两用的效果, 运用View.VISIBLEView.GONE去改变布局的可见性. 这样的做法显然是没什么多大的问题,优点逻辑清晰,控制灵活,但缺点就是耗费资源 在setContentView()或者用inflate加载布局文件时无论View是否 被设置为View.GONE和View.VISIBLE,都会建对象,占用一定程度上的内存,所以在考虑优化程序的时候, 尽量避免资源浪费,降低程序的资源占有量,提高响应速度,提升软件的用户体验所以建议使用viewstub
遇到的问题:  
报错 ViewStub must have a non-null ViewGroup viewParent  
原因: 
官方文档:viewstub不能反复inflate,只能inflate一次 
解决办法很简单,当inflate过进行标识,下次在使用的时候判断下,是否inflate了,如果有直接用,这样就可以避免
重复inflate了。是不是感觉viewsub非常好用,消耗性能低,不用每次都去inflate

参考blog

http://blog.csdn.net/hitlion2008/article/details/6737537

Java代码   收藏代码
  1.     private void leftViewInit() {  
  2.     // viewsub 只能inflate一次  
  3.     leftView = leftViewStub.inflate();  
  4.     imgLeft = (ImageView) findViewById(R.id.imgLeft);  
  5.     imgLeft.setOnClickListener(this);  
  6.     leftIsInflate = true;//标识下  
  7. }  
  8. public void setLeftButton(int res) {  
  9.     if (!leftIsInflate) {//如果已经inflate过就不用在进行重复的inflate  
  10.         leftViewInit();  
  11.     }  
  12.     if (res > 0) {  
  13.         imgLeft.setBackgroundResource(res);  
  14.     }  
  15. }  

你可能感兴趣的:(android viewstub)