更多精彩内容,请点击阅读:《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: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>
<?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);
}
};
}
该属性用于设置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"/>
预览效果:
欢迎大家关注我的微信公众号:
微信公众号:sn0wdr1am