API Demos 2.3 學習筆記 (9)-- Views->Visibility
更多精彩內容,請點擊閱讀:《API Demos 2.3 學習筆記》
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可見性。該屬性取值範圍如下所示:
|
常量 |
值 |
描述 |
|---|---|---|
|
|
0 |
屏幕可見,默認取值。 |
|
|
1 |
屏幕上顯示,但是在Layout布局上會占據相應位置。 |
|
|
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>
<?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);
}
};
}
該屬性用於設置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
上一篇:
一份比較實用的Ubuntu下替代WIN軟件列表
下一篇:
Android中安裝軟件到模擬器時提示:INSTALL_FAILED_INSUFFICIENT_STORAGE 解決辦法
cocos2d-x Box2d 入門例子
SQLServer 2012 登陸異常問題
從雲端出發的智能法律服務—— 阿裏體係使普惠法律服務成為可能
優化器裏的概率學 - 性能抖動原理分析
【資料合集】2017雲棲大會 成都峰會全麵回顧:PDF下載+現場視頻
Linux CentOs7.3 Apache2.4.6 + Mysql5.7.18 + PHP5.6.3 + Laravel5.2
Kafka詳解五、Kafka Consumer的底層API- SimpleConsumer
linux ssh下 vi清空文件內容命令
旅行規劃類app定製開發
探索Alpha-Go —— AI是如何在圍棋項目上打敗人類的