389
技術社區[雲棲]
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是如何在圍棋項目上打敗人類的