Android中visibility属性VISIBLEINVISIBLEGONE的区别

博观而约取,厚积而薄发。这篇文章主要讲述Android中visibility属性VISIBLEINVISIBLEGONE的区别相关的知识,希望能为你提供帮助。
在android开发中,大部分控件都有visibility这个属性,其属性有3个分别为“visible ”、“invisible”、“gone”。主要用来设置控制控件的显示和隐藏。有些人可能会疑惑Invisible和gone是有什么区别的???那么,我们带着这个疑问看下面:
 
【Android中visibility属性VISIBLEINVISIBLEGONE的区别】其在XML文件和java代码中设置如下:
 
 
可见(visible)
XML文件:android:visibility="visible"
Java代码:view.setVisibility(View.VISIBLE);
 
不可见(invisible)
XML文件:android:visibility="invisible"
Java代码:view.setVisibility(View.INVISIBLE);
 
隐藏(GONE)
XML文件:android:visibility="gone"
Java代码:view.setVisibility(View.GONE);
 
 
为了区别三者,我建了一个Dome进行演示,先上Dome的代码,演示后就知道它们的区别:
 
XML文件:
 
[html]  view plain  copy  

  1. < ?xml  version="1.0"  encoding="utf-8"?>    
  2. < LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"   
  3.         android:layout_width="fill_parent"   
  4.         android:layout_height="fill_parent"   
  5.         android:orientation="vertical">    
  6.         < LinearLayout   
  7.                 android:layout_width="fill_parent"   
  8.                 android:layout_height="wrap_content"   
  9.                 android:orientation="horizontal"   
  10.                 android:layout_marginBottom="20dip"  >    
  11.    
  12.                 < TextView   
  13.                         android:layout_width="wrap_content"   
  14.                         android:layout_height="wrap_content"   
  15.                         android:layout_weight="1"   
  16.                         android:background="#F00"   
  17.                         android:text="TextView1"   
  18.                         android:textSize="23sp"   
  19.                         android:visibility="visible"  />    
  20.    
  21.                 < TextView   
  22.                         android:id="@+id/mainTV2"   
  23.                         android:layout_width="wrap_content"   
  24.                         android:layout_height="wrap_content"   
  25.                         android:layout_weight="1"   
  26.                         android:background="#00F"   
  27.                         android:text="TextView2"   
  28.                         android:textSize="23sp"   
  29.                         android:visibility="visible"  />    
  30.         < /LinearLayout>    
  31.            
  32.         < Button     
  33.                 android:id="@+id/mainBtn1"   
  34.                 android:layout_width="fill_parent"   
  35.                 android:layout_height="wrap_content"   
  36.                 android:text="TextView2为VISIBLE"   
  37.                 android:onClick="mianOnClickListener"/>    
  38.            
  39.         < Button     
  40.                 android:id="@+id/mainBtn2"   
  41.                 android:layout_width="fill_parent"   
  42.                 android:layout_height="wrap_content"   
  43.                 android:text="TextView2为INVISIBLE"   
  44.                 android:onClick="mianOnClickListener"/>    
  45.            
  46.         < Button     
  47.                 android:id="@+id/mainBtn3"   
  48.                 android:layout_width="fill_parent"   
  49.                 android:layout_height="wrap_content"   
  50.                 android:text="TextView2为GONE"   
  51.                 android:onClick="mianOnClickListener"/>    
  52. < /LinearLayout>    

后面三个Button只要是控制TextView的visibility的属性
 
Java代码:
[java]  view plain  copy  
  1. package  com.chindroid.visibility;    
  2.    
  3. import  android.app.Activity;    
  4. import  android.os.Bundle;    
  5. import  android.view.View;    
  6. import  android.widget.TextView;    
  7.    
  8. public  class  MainActivity  extends  Activity  {   
  9.         /**  TextView2  */   
  10.         private  TextView  mainTV2  =  null;    
  11.            
  12.         @Override   
  13.         public  void  onCreate(Bundle  savedInstanceState)  {   
  14.                 super.onCreate(savedInstanceState);    
  15.                 setContentView(R.layout.main);    
  16.                    
  17.                 //初始化数据   
  18.                 initData();    
  19.         }   
  20.    
  21.         /**  初始化控件的方法  */   
  22.         private  void  initData()  {   
  23.                 mainTV2  =  (TextView)findViewById(R.id.mainTV2);    
  24.         }   
  25.            
  26.         /** 
  27.           *  MainActivity中响应按钮点击事件的方法 
  28.           *   
  29.           *  @param  v 
  30.           */   
  31.         public  void  mianOnClickListener(View  v){   
  32.                 switch  (v.getId()){   
  33.                         case  R.id.mainBtn1:{        //按钮1的响应事件   
  34.                                 //设置TextView2可见   
  35.                                 mainTV2.setVisibility(View.VISIBLE);    
  36.                                 break;    
  37.                         }   
  38.                         case  R.id.mainBtn2:{        //按钮2的响应事件   
  39.                                 //设置TextView2不可见   
  40.                                 mainTV2.setVisibility(View.INVISIBLE);    
  41.                                 break;    
  42.                         }   
  43.                         case  R.id.mainBtn3:{        //按钮3的响应事件   
  44.                                 //设置TextView2隐藏   
  45.                                 mainTV2.setVisibility(View.GONE);    
  46.                                 break;    
  47.                         }   
  48.                         default:   
  49.                                 break;    
  50.                 }   
  51.         }   
  52. }   

由于程序一启动两个TextView都是可见的
Android中visibility属性VISIBLEINVISIBLEGONE的区别

文章图片

当我们点击第1个按钮,把TextView2visibility属性设置为INVISIBLE时,程序如下如下图所示:
Android中visibility属性VISIBLEINVISIBLEGONE的区别

文章图片

当我们点击第3个按钮,把TextView2visibility属性设置为GONE时,程序如下如下图所示:
Android中visibility属性VISIBLEINVISIBLEGONE的区别

文章图片

当我们再点击第1个按钮,把TextView2visibility属性设置为VISIBLE时,TextView2又呈现出来了,如下图所示:
Android中visibility属性VISIBLEINVISIBLEGONE的区别

文章图片

 
由上面的演示可知
VISIBLE:设置控件可见
INVISIBLE:设置控件不可见,会占坑
GONE:设置控件隐藏,不会占坑
 
而INVISIBLE和GONE的主要区别是:当控件visibility属性为INVISIBLE时,界面保留了view控件所占有的空间;而控件属性为GONE时,界面则不保留view控件所占有的空间。



    推荐阅读