zoukankan      html  css  js  c++  java
  • 【转】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文件:

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

  • 相关阅读:
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(2)
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(9)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(10)
    CKEditor在asp.net环境下的使用一例
    《Microsoft Sql server 2008 Internals》读书笔记第五章Table(7)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(11)
    千万数据的连续ID表,快速读取其中指定的某1000条数据?
    javascript中的float运算精度
    .Net与Java的互操作(.NET StockTrader微软官方示例应用程序)
    《Microsoft Sql server 2008 Internals》读书笔记第十一章DBCC Internals(6)
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4292252.html
Copyright © 2011-2022 走看看