3.3 更改TextView文字颜色
引用Drawable颜色常数及背景色
范例说明
上一个范例通过Drawable来定义颜色常数,但实际设计中最常用的方法,则是使用程序控制TextView或其它对象的背景色(setBackgroundDrawable方法),如判断对象被点击时的背景色亮起、当失去焦点时,又恢复成原来的背景色等等。
以下的范例,将扩展前一个范例的实现,预先在Layout当中设计好两个TextView,并在onCreate同时,通过两种程序描述方法,实时更改原来Layout里TextView的背景色以及文字颜色,最后学会使用Android默认的颜色常数(graphics.Color)来更改文字的前景色。
运行结果
|
| 图3-3 通过setBackgroundDrawable方法更 改TextView的背景色以及graphics.Color更改前景色 |
- src/irdc.ex03_03/EX03_03.java
程序里新建两个类成员变量:mTextView01与mTextView02,这两个变量在onCreate之初,以findViewById方法使之初始化为layout(main.xml)里的TextView对象。在当中使用了Resource类以及Drawable类,分别创建了resources对象以及HippoDrawable对象,并将前一个范例中所创建的R.drawable.white以getDrawable方法加载,最后则调用了setBackgroundDrawable来更改mTextView01的文字底纹。更改TextView里的文字,则使用了setText方法。
在mTextView02当中,使用了graphics.Color里的颜色常数,接着,再利用setTextColor更改文字的前景色。
扩展学习
- package irdc.ex03_03;
- import android.app.Activity;
- import android.content.res.Resources;
- import android.graphics.Color;
- import android.graphics.drawable.Drawable;
- import android.os.Bundle;
- import android.widget.TextView;
- public class EX03_03 extends Activity
- {
- private TextView mTextView01;
- private TextView mTextView02;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mTextView01 = (TextView) findViewById(R.id.myTextView01);
- mTextView01.setText("我是应用Drawable背景色的戴维文本。");
- Resources resources = getBaseContext().getResources();
- Drawable HippoDrawable = resources.getDrawable(R.drawable.white);
- mTextView01.setBackgroundDrawable(HippoDrawable);
- mTextView02 = (TextView) findViewById(R.id.myTextView02);
- /*下使用Color.MAGENTA指定文本的颜色为紫红色*/
- mTextView02.setTextColor(Color.MAGENTA);
- }
- }
- Resources resources = getBaseContext().getResources();
- Drawable HippoDrawable = resources.getDrawable(R.drawable.white);
上述这2行代码,在前一版本中的写法是这样的:
- Resources.resources = getDrawable(R.drawable.solid_red);
- Drawable HippoDrawable = resources.getDrawable(R.drawable.white);
但是在1.0之后的版本,Resources不再支持直接使用 .getDrawable方法直接取用drawable,而必须先取得基类的Context才行。
此外,在程序里使用了Color.MAGENTA让TextView里的文字变成了粉红色,事实上,在Android里还有以下12种常见的颜色:
- Color.BLACK
- Color.BLUE
- Color.CYAN
- Color.DKGRAY
- Color.GRAY
- Color.GREEN
- Color.LTGRAY
- Color.MAGENTA
- Color.RED
- Color.TRANSPARENT
- Color.WHITE
- Color.YELLOW
这些颜色常数是定义在android.graphics.Color里的:
|
类型 |
常数 |
值 |
色码 |
|
int |
BLACK |
-16777216 |
0xff000000 |
|
int |
BLUE |
-16776961 |
0xff0000ff |
|
int |
CYAN |
-16711681 |
0xff00ffff |
|
int |
DKGRAY |
-12303292 |
0xff444444 |
|
int |
GRAY |
-7829368 |
0xff888888 |
|
int |
GREEN |
-16711936 |
0xff00ff00 |
|
int |
LTGRAY |
-3355444 |
0xffcccccc |
|
int |
MAGENTA |
-65281 |
0xffff00ff |
|
int |
RED |
-65536 |
0xffff0000 |
|
int |
TRANSPARENT |
0 |
0x00000000 |
|
int |
WHITE |
-1 |
0xffffffff |
|
int |
YELLOW |
-256 |
0xffffff00 |
| 回书目 上一节 下一节 |



























