Android中visibility属性VISIBLE、INVISIBLE、GONE的区别

转载博客:http://blog.csdn.net/chindroid/article/details/8000713

在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的代码,演示后就知道它们的区别:

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 
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代码:

 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都是可见的

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

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

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

由上面的演示可知

VISIBLE:设置控件可见

INVISIBLE:设置控件不可见

GONE:设置控件隐藏

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

我是刚刚进入公司的Android实习生,菜鸟一枚,博客记录我犯过的错,收获的东西,学到的知识和技术,可能里面会有很多错误的地方,幼稚的地方,欢迎大家指出来,帮助我进步,但请别伤害我,我只是菜鸟一枚,我在努力争取进步。
原文地址:https://www.cnblogs.com/smilefortoday/p/4015625.html