在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控件所占有的空间。