摘自 http://www.cnblogs.com/flyme/archive/2011/11/24/2261166.html

摘自http://hi.baidu.com/jlcust/item/52f28908285867db72e6764d

摘自http://blog.csdn.net/boliu123/article/details/7293618

(一)

android中UI应用的开发中经常会使用view.setVisibility()来设置控件的可见性,其中该函数有3个可选值,他们有着不同的含义:

View.VISIBLE--->可见
View.INVISIBLE--->不可见,但这个View仍然会占用在xml文件中所分配的布局空间,不重新layout
View.GONE---->不可见,但这个View在ViewGroup中不保留位置,会重新layout,不再占用空间,那后面的view就会取代他的位置,


所以在使用时要小心,尤其要善用INVISIBLE和GONE;

(二

前者隐藏View并释放View之前占有的layout空间;

后者仅仅是隐藏,但是不释放空间。

前者如下图的上面一组,释放空间后,下面的图片上移,后者情形如下图的下面一组,隐藏后,空间依旧占用:

(三

过去太多的情况下以为把一个view的的可见性设置为Gone,因为这样直接把这个组件拿走,不会像Invisable一样,会留下一个很难看的背景图。的确也一直是这么做的

但是最近实现一个浮动层弹出和消失的效果,下边是个ListView.

但是后来莫名奇妙的发现ListView中的Adapter 的getView方法莫名其妙的反复调用。

因为整个界面逻辑比较多,找了一天才发现是浮动层的原因。

浮动层效果是:的是做完动画显示一定的内容后,调用的Gone隐藏的。

后来经过测试,发现如果有组件通过设置Gone 属性隐藏掉,会导致整个界面重新测量宽高,而导致所有AdapterView的View 重新加载。

设为Invisable之后,问题解决

当数据量过大的时候,我想,这两个看起来没太大区别、普通面试常问道的一个小问题,可能效果会很不同吧。


希望对大家有所帮助

更多相关文章

  1. Android界面之常用的圆角提示框Dialog
  2. Android(安卓)中隐藏虚拟按键的方法实例代码
  3. android 10.0 以上隐藏方法无法调用 #Accessing hidden method
  4. android之在启动运用程序的时候彻底隐藏TitleBar
  5. Android(安卓)动态显示和隐藏状态栏详解及实例
  6. android之浮动title
  7. Android(安卓)打电话 流程
  8. android 监听软键盘弹起和关闭状态与点击空白区域软键盘隐藏
  9. Android隐藏标题栏和状态栏

随机推荐

  1. 10.26会议记录
  2. Android读写XML(下)——创建XML文档
  3. osmdroid的使用
  4. 浅谈android的selector背景选择器
  5. Android(安卓)Toast优化,不看别后悔
  6. 对Android进程优先级和Service的理解
  7. 解决TextView中MaxLines与ellipsize=end
  8. Android的多媒体数据库
  9. [Android]自定义View带效果的滚动数字
  10. Android应用安装错误:INSTALL_FAILED_MEDI