`

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

 
阅读更多

在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文件:

 

[html] view plaincopy
 
  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 plaincopy
 
  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中visibility属性VISIBLE、INVISIBLE、GONE的区别

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

    Android中visibility属性

    在XML中,可以直接写入属性`android:visibility="value"`,其中`value`是`visible`、`invisible`或`gone`。而在Java或Kotlin代码中,可以使用`View.VISIBLE`、`View.INVISIBLE`和`View.GONE`常量来设置。 例如: ``...

    VIsibility属性

    VISIBLE、INVISIBLE 和 GONE 是 VISIBILITY 属性的三个主要状态,它们的区别在于对控件的显示和布局的影响。 VISIBLE 状态下,控件是可见的,占用屏幕空间,且参与布局计算。在 XML 文件中,我们可以使用 android:...

    浅析Android中的visibility属性

    在Android开发中,`visibility`属性是控制UI组件(如按钮、文本视图等)是否在屏幕上显示的关键属性。它提供了三个可能的值,每个值都有特定的效果: 1. **可见(Visible)**:当`visibility`设置为`visible`时,...

    android.R.styleable 类包含 XML属性

    * android:visibility="invisible" // 设置控件不可见,但是在布局中占用的位置还在 * android:visibility="gone" // 设置控件不可见,完全从布局中消失 定义背景图片 android:background 属性用于设置控件的背景...

    Android 的Gone 实例

    `Gone`是Android中的一个View可见性属性,与`Visible`(可见)和`Invisible`(不可见)并列。这三种状态分别代表了不同的含义: 1. `VISIBLE`:默认值,表示视图可见。用户可以看到该视图,并占用相应的布局空间。 ...

    Android_布局属性大.zip

    布局属性还包括了可见性控制,如`android:visibility`,可设置为“visible”、“gone”或“invisible”,分别对应可见、完全不可见和占用空间但不可见。 在性能方面,避免深度嵌套布局和使用高效的布局如...

    android Ui 属性

    3. `android:visibility`:控制控件的可见性,可设为"visible"、"gone"或"invisible"。 4. `android:layout_alignParent*` 和 `android:layout_to*`:在相对布局中定义控件的位置。 通过熟练掌握这些Android UI...

    Android笔试面试题[参照].pdf

    android:visibility 属性用于设置控件的可见性,可以取值为 "visible"、"invisible"、"gone"。 本文详细介绍了 Android 的基本 UI 控件和布局文件的用法,了解这些控件和布局文件是 Android 开发的基础。

    android学习之控件的显示和隐藏

    在XML布局文件中,可以通过`android:visibility`属性来设置视图组件的可见性。该属性有三个可能的值: 1. **Visible**:表示视图可见。这是默认值。 2. **Invisible**:表示视图不可见,但仍保留其布局空间。 3. **...

    Android项目设计与开发:运行提示和进度条.ppt

    进度条 运行状态提示有三种visibility形态 visible 控件可见且占据界面的空间 invisible 控件不可见,仍占据界面空间 gone 控件不可见,也不占据空间 进度条 运行状态应用: 在布局中插入一个ProgressBar标签,默认...

    Android开发 -- 控件的显示与隐藏 setVisibility View.VISIBLE View.INVISIBLE View.GONE

    如果一个控件从`View.GONE`或`View.INVISIBLE`状态切换到`View.VISIBLE`,它将在布局中占用相应的空间。 2. **View.INVISIBLE** 设置为`View.INVISIBLE`后,控件将变得不可见,但仍然占用布局中的空间。换句话说,...

    android 属性汇总.rar

    - `android:visibility`:设置视图的可见性,可选"visible"、"invisible"或"gone"。 以上只是一部分可能包含在"android 属性汇总"中的知识点。实际文件中可能有更详尽的列表,包括Android的布局管理器属性、自定义...

    Android项目设计与开发:运行提示和进度条2.ppt

    进度条 运行状态提示有三种visibility形态 visible 控件可见且占据界面的空间 invisible 控件不可见,仍占据界面空间 gone 控件不可见,也不占据空间 进度条 运行状态应用: 在布局中插入一个ProgressBar标签,默认...

    Android应用:StubView显示与隐藏

    在Android中,我们可以使用`View.VISIBLE`、`View.GONE`和`View.INVISIBLE`这三个常量来控制视图的可见状态。`VISIBLE`表示视图可见,`GONE`表示视图不在布局中占用空间,而`INVISIBLE`则表示视图不可见但仍然占用...

    Android_布局属性大(1).zip

    7. `android:visibility`:控制视图的可见性,可以设置为"visible"(默认)、"gone"(不占用空间)或"invisible"(不可见但占用空间)。 三、高级布局技巧 1. 使用`include`标签引入布局碎片,提高代码复用率。 2....

    Android布局属性总结

    12. `android:visibility`:定义视图的可见性,可以是`VISIBLE`、`INVISIBLE`或`GONE`。 13. `android:requiresFadingEdge`:滚动时边缘是否渐变褪色,提供视觉反馈。 14. `android:clickable`:视图是否可点击。 15...

    android面试题

    Android:visibility 属性控制控件的显示和隐藏,包括 VISIBLE、INVISIBLE 和 GONE 三种状态。 八、 Android 布局 Android 布局有多种,包括 LinearLayout、RelativeLayout、FrameLayout、AbsoluteLayout、...

Global site tag (gtag.js) - Google Analytics