在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为“visible ”、“invisible”、“gone”。主要用来设置控制控件的显示和隐藏。有些人可能会疑惑Invisible和gone是有什么区别的???那么,我们带着这个疑问看下面:

其在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的代码,演示后就知道它们的区别:
main.xml:
 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         <TextView
12             android:layout_width="wrap_content"
13             android:layout_height="wrap_content"
14             android:layout_weight="1"
15             android:background="#FF0000"
16             android:text="TextView1" />
17         <TextView
18             android:id="@+id/textView2"
19             android:layout_width="wrap_content"
20             android:layout_height="wrap_content"
21             android:layout_weight="1"
22             android:background="#0000FF"
23             android:text="TextView2" />
24     </LinearLayout>
25     <Button
26         android:id="@+id/btn1"
27         android:layout_width="fill_parent"
28         android:layout_height="wrap_content"
29         android:text="TextView2为VISIBLE" />
30     <Button
31         android:id="@+id/btn2"
32         android:layout_width="fill_parent"
33         android:layout_height="wrap_content"
34         android:text="TextView2为INVISIBLE" />
35     <Button
36         android:id="@+id/btn3"
37         android:layout_width="fill_parent"
38         android:layout_height="wrap_content"
39         android:text="TextView2为GONE" />
40 </LinearLayout>

MyButtonDemo.class:
 1 package com.gaolei.demo;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.view.View.OnClickListener;
 7 import android.widget.Button;
 8 import android.widget.TextView;
 9 
10 public class MainActivity extends Activity implements OnClickListener {
11     private TextView textView2;
12     private Button btn1;
13     private Button btn2;
14     private Button btn3;
15 
16     @Override
17     public void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.main);
20 
21         textView2 = (TextView) this.findViewById(R.id.textView2);
22 
23         findView();
24         bindView();
25 
26     }
27 
28     private void findView() {
29         btn1 = (Button) this.findViewById(R.id.btn1);
30         btn2 = (Button) this.findViewById(R.id.btn2);
31         btn3 = (Button) this.findViewById(R.id.btn3);
32     }
33 
34     private void bindView() {
35         btn1.setOnClickListener(this);
36         btn2.setOnClickListener(this);
37         btn3.setOnClickListener(this);
38     }
39 
40     public void onClick(View v) {
41         switch (v.getId()) {
42         case R.id.btn1:
43             // 设置TextView2可见
44             textView2.setVisibility(View.VISIBLE);
45             break;
46         case R.id.btn2:
47             // 设置TextView2不可见
48             textView2.setVisibility(View.INVISIBLE);
49             break;
50         case R.id.btn3:
51             // 设置TextView2隐藏
52             textView2.setVisibility(View.GONE);
53             break;
54 
55         default:
56             break;
57         }
58     }
59 }
visible:


invisible:


gone:



由上面的演示可知
VISIBLE:设置控件可见
INVISIBLE:设置控件不可见
GONE:设置控件隐藏


而INVISIBLE和GONE的主要区别是:当控件visibility属性为INVISIBLE时,界面保留了view控件所占有的空间;而控件属性为GONE时,界面则不保留view控件所占有的空间。