`

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

  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="#F00"
  16.             android:text="TextView1"
  17.             android:textSize="23sp"
  18.             android:visibility="visible" />
  19.         <TextView
  20.             android:id="@+id/mainTV2"
  21.             android:layout_width="wrap_content"
  22.             android:layout_height="wrap_content"
  23.             android:layout_weight="1"
  24.             android:background="#00F"
  25.             android:text="TextView2"
  26.             android:textSize="23sp"
  27.             android:visibility="visible" />
  28.     </LinearLayout>   
  29.    <Button
  30.         android:id="@+id/mainBtn1"
  31.         android:layout_width="fill_parent"
  32.         android:layout_height="wrap_content"
  33.         android:text="TextView2为VISIBLE"
  34.         android:onClick="mianOnClickListener"/>
  35.    
  36.     <Button
  37.         android:id="@+id/mainBtn2"
  38.         android:layout_width="fill_parent"
  39.         android:layout_height="wrap_content"
  40.         android:text="TextView2为INVISIBLE"
  41.         android:onClick="mianOnClickListener"/>   
  42.     <Button
  43.         android:id="@+id/mainBtn3"
  44.         android:layout_width="fill_parent"
  45.         android:layout_height="wrap_content"
  46.         android:text="TextView2为GONE"
  47.         android:onClick="mianOnClickListener"/>
  48. </LinearLayout>
复制代码

后面三个Button只要是控制TextView的visibility的属性

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

由于程序一启动两个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_布局属性大(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、...

    Android应用:StubView显示与隐藏

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

Global site tag (gtag.js) - Google Analytics