利用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); } }
相关推荐
在Android开发中,ViewStub是一个轻量级的组件,它在布局文件中占用的空间为0,不会参与初始化时的视图加载。ViewStub通常用于延迟加载或者动态插入视图,尤其适用于实现页面状态的动态切换,如空状态、错误状态、...
在DataBinding中使用ViewStub,首先需要在XML布局文件中定义ViewStub,并设置`android:layout`属性来指定要加载的子布局资源。例如: ```xml <layout xmlns:android="http://schemas.android.com/apk/res/android">...
在Android开发中,ViewStub是一个轻量级的组件,它在初始加载时并不可见,不占用任何空间,常用于延迟加载布局或者实现布局复用。这个简单的示例旨在教你如何在项目中有效地利用ViewStub。 首先,了解ViewStub的...
在Android开发中,ViewStub是一个轻量级的组件,它允许开发者延迟加载和初始化布局。ViewStub不占用屏幕空间,直到被显式地设置为可见或者调用`inflate()`方法时,才会加载指定的布局并将其插入到父视图中。这种特性...
总结来说,ViewStub是Android UI优化的重要工具,通过延迟加载和减少内存占用,可以显著提升应用的性能和用户体验。结合`merge`标签,开发者可以创建更高效、更轻量级的布局。在实际开发中,根据需求灵活运用这些...
ViewStub是Android开发中一种特殊的轻量级控件,它在布局文件中占用的空间为0,不会参与初始化时的视图构建,直到被显式地`inflate`或设置了`android:layout_width`和`android:layout_height`属性后才会被加载。...
ViewStub是Android布局优化中一个很不错的标签/控件,直接继承自View。虽然Android开发人员基本上都听说过,但是真正用的可能不多。 ViewStub可以理解成一个非常轻量级的View,与其他的控件一样,有着自己的属性及...
在Android开发中,ViewStub是一个轻量级的控件,常用于实现动态加载和延迟加载。这个控件在默认情况下不占用布局空间,且不可见。只有当被 inflated(加载)时,它才会占据布局中的位置,并显示其中的视图。这种特性...
深入理解Android中的ViewStub组件,这是一个轻量级的视图元素,主要用来在运行时动态加载和控制布局。ViewStub在XML布局中占用极小的空间,且在初始化时不加载其指定的布局,只有在设置为可见或者调用inflate()方法...
在Android开发中,创建Tab选项卡效果是一种常见的需求,它能帮助用户在多个视图间进行切换,提高交互体验。ViewStub是一个轻量级的View,通常用于延迟加载布局,它在XML布局文件中占据几乎为0的内存空间,直到被 ...
ViewStub在Android开发中是一个非常实用的工具,用于优化布局加载,尤其是在处理复杂视图时。它是View的一个子类,其主要特点在于不可见、占用空间为0,以及能够延迟加载布局资源。这个特性使得ViewStub成为在不必要...
本文将重点介绍一种特殊的布局组件——`ViewStub`,它是Android提供的一种轻量级、延迟加载的视图,用于解决复杂布局中减少不必要的资源消耗问题。 `ViewStub`是一个不可见的、占用空间极小的视图对象,它在初始化...
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能... 推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看
Android 在 layout xml 中使用 ViewStub 完成动态加载问题 Android 中的动态加载问题是指在应用程序中根据不同的条件来决定显示哪个 View 或某个布局的问题。在 Android 中,通常的做法是把可能用到的 View 都写在...
BeautifulParallax Beautify your RecyclerViews with a great parallax effect ! Without Carpaccio public class YOURAdapter extends RecyclerView.Adapter { ... ParallaxViewController ...
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把...推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看不见的
在Android开发中,ViewStub是一个轻量级的组件,它在初始加载时占用的资源非常少,主要用于延迟加载和动态插入布局。ViewStub在XML布局文件中定义,但默认情况下它是不可见的,不会占据任何空间,直到被显式地设置为...
相信大家经常听到include、merge、ViewStub这样的标签,官方也提到这三种布局可用于布局的优化。今天就介绍下这三种布局的使用,记录下来,便于后续app中的使用。 include布局重用 app开发过程中,会遇到不同页面里...
在4.5.6节介绍过一个标签,该标签可以在布局文件中引用另外一个布局文件,并可以覆盖被引用布局文件根节点所有与布局相关的属性,也就是以android:layout开头的属性。通过标签可以将一个非常庞大的布局文件分解成...