在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);


Constant Value Description
visible 0 Visible on screen; the default value.
invisible 1 Not displayed, but taken into account during layout (space is left for it).
gone 2 Completely hidden, as if the view had not been added.


区别主要如下所示:

  • VISIBLE:设置控件可见,This view is visible.
  • INVISIBLE:设置控件不可见,This view is invisible, but it still takes up space for layout purposes.
  • GONE:设置控件隐藏,This view is invisible, and it doesn't take any space for layout purposes.
  • 而INVISIBLE和GONE的主要区别是:当控件visibility属性为INVISIBLE时,界面保留了view控件所占有的空间;而控件属性为GONE时,界面则不保留view控件所占有的空间。


详细的对比可以通过一下Demo来展现:

布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical">    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:layout_marginBottom="20dip" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="#F00"            android:text="TextView1"            android:textSize="23sp"            android:visibility="visible" />        <TextView            android:id="@+id/mainTV2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="#00F"            android:text="TextView2"            android:textSize="23sp"            android:visibility="visible" />    </LinearLayout>        <Button         android:id="@+id/mainBtn1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="TextView2为VISIBLE"        android:onClick="mianOnClickListener"/>        <Button         android:id="@+id/mainBtn2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="TextView2为INVISIBLE"        android:onClick="mianOnClickListener"/>        <Button         android:id="@+id/mainBtn3"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="TextView2为GONE"        android:onClick="mianOnClickListener"/></LinearLayout>

MainActivity .java

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;public class MainActivity extends Activity {/** TextView2 */private TextView mainTV2 = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                //初始化数据        initData();    }    /** 初始化控件的方法 */private void initData() {mainTV2 = (TextView)findViewById(R.id.mainTV2);}/** * MainActivity中响应按钮点击事件的方法 *  * @param v */public void mianOnClickListener(View v){switch (v.getId()){case R.id.mainBtn1:{//按钮1的响应事件//设置TextView2可见mainTV2.setVisibility(View.VISIBLE);break;}case R.id.mainBtn2:{//按钮2的响应事件//设置TextView2不可见mainTV2.setVisibility(View.INVISIBLE);break;}case R.id.mainBtn3:{//按钮3的响应事件//设置TextView2隐藏mainTV2.setVisibility(View.GONE);break;}default:break;}}}

step1:程序启动,两个TextView都是可见的,如下图所示:

Android中android:visibility 属性VISIBLE、INVISIBLE、GONE的区别_第1张图片" width="432" height="358" style="border:1px solid black;">

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

Android中android:visibility 属性VISIBLE、INVISIBLE、GONE的区别_第2张图片" width="428" height="348" style="border:1px solid black;">

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

Android中android:visibility 属性VISIBLE、INVISIBLE、GONE的区别_第3张图片" width="433" height="343" style="border:1px solid black;">

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

Android中android:visibility 属性VISIBLE、INVISIBLE、GONE的区别_第4张图片" width="432" height="358" style="border:1px solid black;">

参考:http://developer.android.com/reference/android/view/View.html#GONE


====================================================================================

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!

转载请保留原文地址:http://blog.csdn.net/ouyang_peng

====================================================================================


更多相关文章

  1. Android(安卓)通过selector改变状态
  2. Android(安卓)自定义View——自定义ProgressBar
  3. 关于Android的Animation使用(XML)
  4. Android中设置半个屏幕大小且居中的按钮布局 (layout_weight属性
  5. android开发老罗教学视频
  6. android的动画相关参数说明
  7. Android开发把项目打包成apk
  8. 【android】scaleType属性与ImagView中图片的显示的关系
  9. Android开发艺术探索笔记 第四章 View的工作原理

随机推荐

  1. android studio 新建class文件报错Unable
  2. Android(安卓)结束进程的方法
  3. Android(安卓)多次点击事件的触发方法
  4. android 常用第三方插件收藏
  5. Android的冷启动优化
  6. android存取数据(基础)
  7. 从屏幕底部弹出PopupWindow
  8. Android自定义弹窗效果
  9. Android(安卓)Design Support Library之T
  10. Flutter Android(安卓)Studio打包安卓apk