`
hualikejava
  • 浏览: 169821 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多

利用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
 

 	private void leftViewInit() {
		// viewsub 只能inflate一次
		leftView = leftViewStub.inflate();
		imgLeft = (ImageView) findViewById(R.id.imgLeft);
		imgLeft.setOnClickListener(this);
		leftIsInflate = true;//标识下
	}
	public void setLeftButton(int res) {
		if (!leftIsInflate) {//如果已经inflate过就不用在进行重复的inflate
			leftViewInit();
		}
		if (res > 0) {
			imgLeft.setBackgroundResource(res);
		}
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics