閱讀389 返回首頁    go 技術社區[雲棲]


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:
          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:andro
    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:
          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:
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/visibility_1_vis"/>

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

        <Button android:
            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"/>


預覽效果:


最後更新:2017-04-02 06:51:58

  上一篇:go 一份比較實用的Ubuntu下替代WIN軟件列表
  下一篇:go Android中安裝軟件到模擬器時提示:INSTALL_FAILED_INSUFFICIENT_STORAGE 解決辦法