API Demos 2.3 学习笔记 (9)-- Views->Visibility

简介:

更多精彩内容,请点击阅读:《API Demos 2.3 学习笔记》


Visibility 示例以TextView为例介绍了View的三种可见性以及如何设置View的可见性。这些可见性的设置方法同样适用于View以及其他继承自View的子类对象。从示例布局文件来看,主要分为两部分,一部分为一个线性垂直布局,包含三个不同背景色的TextVew对象;另一部分,为一个线性水平布局,包含三个Button对象。
View的可见性主要分为三种, VISIBLE(可见)、 INVISIBLE(不可见)、 GONE(彻底隐藏)。这三种可见性的区别在于:
1、VISIBLE(可见)代表该View对象显示可见;
2、INVISIBLE(不可见)代表该View对象隐藏不可见,但是仍然占据着Layout布局中的位置;
3、GONE(彻底隐藏)代表该View对象彻底隐藏不可见,并且不占据Layout布局中的位置;
下面我们以TextView为例,简单介绍View的三种可见性以及相应的设置方法。
1、在Java代码中设置可见性

在Java代码中,我们通过函数public void setVisibility (int visibility)来设置View的可见性,其中参数 visibility取值范围如下:View.VISIBLE、View.INVISIBLE、以及View.GONE。具体参考如下:

	private View mVictim = null;

	// 通过findViewById获得一个待改变可见性的View对象
	mVictim = findViewById(R.id.victim);

	//设置mVictim彻底隐藏      	        	
	mVictim.setVisibility(View.GONE);
2、在xml布局文件中
在xml布局文件中,我们通过设置“android:visibility”属性来设置View可见性。该属性取值范围如下所示:

常量

描述

visible

0

屏幕可见,默认取值。

invisible

1

屏幕上显示,但是在Layout布局上会占据相应位置。

gone

2

彻底隐藏不显示,并且不会在Layout布局上占据任何位置。


具体设置参考如下:

<TextView android:id="@+id/victim"
          android:background="@drawable/green"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:visibility="visible"          
      android:text="@string/visibility_1_view_2"/>

下面我们进行实例代码解析:
res-value-string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="visibility_1_view_1">View A</string>
    <string name="visibility_1_view_2">View B</string>
    <string name="visibility_1_view_3">View C</string>
    <string name="visibility_1_vis">Vis</string>
    <string name="visibility_1_invis">Invis</string>
    <string name="visibility_1_gone">Gone</string>
</resources>


res-layout-visibility_1.xml

<?xml version="1.0" encoding="utf-8"?>

<!--改变View可见性的实例演示,请参考相应的Java代码。 -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

	<!--一个线性垂直布局,包含三个TextView对象 -->
    <LinearLayout
      android:orientation="vertical"
      android:background="@drawable/box"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
      
	   <!--一个背景色为红色的TextView对象 -->
      <TextView
          android:background="@drawable/red"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:visibility="visible"                    
          android:text="@string/visibility_1_view_1"/>

	   <!--一个背景色为绿色的TextView对象 -->
      <TextView android:id="@+id/victim"
          android:background="@drawable/green"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:visibility="visible"          
          android:text="@string/visibility_1_view_2"/>
          
	   <!--一个背景色为蓝色的TextView对象 -->
      <TextView
          android:background="@drawable/blue"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:visibility="visible"                    
          android:text="@string/visibility_1_view_3"/>

    </LinearLayout>

	<!--一个线性水平布局,包含三个Button对象 -->
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <Button android:id="@+id/vis"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/visibility_1_vis"/>

        <Button android:id="@+id/invis"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/visibility_1_invis"/>

        <Button android:id="@+id/gone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/visibility_1_gone"/>

    </LinearLayout>
</LinearLayout>

src-com.example.android.apis.view-Visibility1.java

package com.example.android.apis.view;


import com.example.android.apis.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


/**
 *  设置一个View对象可见,不可见,彻底消失的实例演示
 *
 */
public class Visibility1 extends Activity {

    private View mVictim = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.visibility_1);

        // 通过findViewById获得一个待改变可见性的View对象
        mVictim = findViewById(R.id.victim);

        // 通过findViewById获得三个Button对象
        Button visibleButton = (Button) findViewById(R.id.vis);
        Button invisibleButton = (Button) findViewById(R.id.invis);
        Button goneButton = (Button) findViewById(R.id.gone);

        // 给每个Button添加点击监听器
        visibleButton.setOnClickListener(mVisibleListener);
        invisibleButton.setOnClickListener(mInvisibleListener);
        goneButton.setOnClickListener(mGoneListener);
    }


    OnClickListener mVisibleListener = new OnClickListener() {
        public void onClick(View v) {
        	  //设置mVictim可见
            mVictim.setVisibility(View.VISIBLE);
        }
    };

    OnClickListener mInvisibleListener = new OnClickListener() {
        public void onClick(View v) {
      	  	//设置mVictim不可见       	
            mVictim.setVisibility(View.INVISIBLE);
        }
    };

    OnClickListener mGoneListener = new OnClickListener() {
        public void onClick(View v) {
      	  	//设置mVictim彻底隐藏      	        	
            mVictim.setVisibility(View.GONE);
        }
    };
}


知识点1:android:background="@drawable/red"
该属性用于设置View的背景,取值可以是背景图片或者背景颜色,可以是系统内置的,也可以是自定义的。其中系统内置图片的引用上一节已经讲过,这里不再赘述。这里我们简单介绍如何定义和引用自定义颜色。
1、打开工程下res-value-color.xml文件,如果没有,请新建一个,文件内容参考如下:

其中name字段为颜色资源名称,#开头的数字为具体颜色值。

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <drawable name="red">#7f00</drawable>
    <drawable name="blue">#770000ff</drawable>
    <drawable name="green">#7700ff00</drawable>
	<drawable name="yellow">#77ffff00</drawable>
	
	<drawable name="screen_background_black">#ff000000</drawable>
    <drawable name="translucent_background">#e0000000</drawable>
    <drawable name="transparent_background">#00000000</drawable>

    <color name="solid_red">#f00</color>
    <color name="solid_blue">#0000ff</color>
    <color name="solid_green">#f0f0</color>
    <color name="solid_yellow">#ffffff00</color>

</resources>

2、对于 drawable和color两种标签的颜色资源,引用方式稍有不同,具体参考如下:
对于color颜色资源的引用:

  <TextView
          android:background="@color/solid_blue"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:visibility="visible"                    
      android:text="@string/visibility_1_view_1"/>

对于drawable颜色资源的引用:

 <TextView
          android:background="@drawable/red"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:visibility="visible"                    
      android:text="@string/visibility_1_view_1"/>


预览效果:


相关文章
|
5月前
|
人工智能 监控 安全
F5社区学习笔记:API和AI如何改变应用安全?
F5社区学习笔记:API和AI如何改变应用安全?
60 1
|
5月前
|
jenkins API 持续交付
jenkins学习笔记之十五:SonarSQube API使用
jenkins学习笔记之十五:SonarSQube API使用
|
8月前
|
XML API 数据格式
【Qt 学习笔记】QWidget的enable属性 | API的介绍
【Qt 学习笔记】QWidget的enable属性 | API的介绍
206 0
|
前端开发 API
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
84 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
62 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结3
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结3
57 0
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结4
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 和mvc总结
57 0
|
1天前
|
JSON API 数据格式
京东商品SKU价格接口(Jd.item_get)丨京东API接口指南
京东商品SKU价格接口(Jd.item_get)是京东开放平台提供的API,用于获取商品详细信息及价格。开发者需先注册账号、申请权限并获取密钥,随后通过HTTP请求调用API,传入商品ID等参数,返回JSON格式的商品信息,包括价格、原价等。接口支持GET/POST方式,适用于Python等语言的开发环境。
28 11
|
25天前
|
人工智能 自然语言处理 API
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
谷歌推出的Multimodal Live API是一个支持多模态交互、低延迟实时互动的AI接口,能够处理文本、音频和视频输入,提供自然流畅的对话体验,适用于多种应用场景。
73 3
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
|
12天前
|
JSON 安全 API
淘宝商品详情API接口(item get pro接口概述)
淘宝商品详情API接口旨在帮助开发者获取淘宝商品的详细信息,包括商品标题、描述、价格、库存、销量、评价等。这些信息对于电商企业而言具有极高的价值,可用于商品信息展示、市场分析、价格比较等多种应用场景。