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

     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代码:

     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实习生,菜鸟一枚,博客记录我犯过的错,收获的东西,学到的知识和技术,可能里面会有很多错误的地方,幼稚的地方,欢迎大家指出来,帮助我进步,但请别伤害我,我只是菜鸟一枚,我在努力争取进步。
  • 相关阅读:
    Viewpager的用法
    Android上下文菜单
    Android开机自启动程序
    微信小程序踩过的坑
    Sublime Text 配置python文件
    Pandas速查手册中文版
    scrapy架构设计分析
    爬虫服务集群处理nginx返回504
    phantomjs 无法打开https网站
    Selenium判断获取的元素是否可见(display:none)
  • 原文地址:https://www.cnblogs.com/smilefortoday/p/4015625.html
Copyright © 2020-2023  润新知