第91页
break;
case R.id.color4: //当选择橙色时
tv.setTextColor(Color.rgb(255, 180, 0));
break;
default:
tv.setTextColor(Color.rgb(255, 255, 255));
}
return true;
}
运行本实例,在文字“打开菜单…”上长时间按键不放时,将弹出上下文菜单,通过该菜单可以改变该文字的颜色,如图8.14所示。
图8.14 弹出的上下文菜单
8.9.4 范例2:创建带子菜单的选项菜单
例8.7 在Eclipse中创建Android项目,名称为8.7,实现一个带子菜单的选项菜单,其中子菜单为可以多选的菜单组。(实例位置:光盘\TM\sl\8\8.7)
(1)在res目录下创建一个menu目录,并在该目录中创建一个名称为optionmenu.xml的菜单资源文件,在该文件中定义3个菜单项,并在第2个菜单项中再定义一个多选菜单组的子菜单,具体代码如下:
说明: 在上面的代码中,加粗的代码用于创建一个子菜单,在该子菜单中添加一个多选菜单组。
(2)在Activity的onCreate()方法中,重写onCreateOptionsMenu()方法,在该方法中,首先创建一个用于解析菜单资源文件的MenuInflater对象,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析后的菜单保存在menu中,最后返回true,关键代码如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=new MenuInflater(this); //实例化一个MenuInflater对象
inflater.inflate(R.menu.optionmenu, menu); //解析菜单文件
return true;
}
(3)重写onOptionsItemSelected()方法,在该方法中,首选判断是否选择了“参数设置”菜单项,如果选择了,改变菜单项的选中状态,然后获取除“参数设置”菜单项之外的菜单项的标题,并用消息提示框显示,最后返回真值,具体代码如下:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getGroupId()==R.id.setting){ //判断是否选择了“参数设置”菜单项
if(item.isChecked()){ //若菜单项已经被选中
item.setChecked(false); //设置菜单项不被选中
}else{
item.setChecked(true); //设置菜单项被选中
}
}
if(item.getItemId()!=R.id.item2){
//弹出消息提示框显示选择的菜单项的标题
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
}
return true;
}
运行本实例,单击屏幕右上方的菜单按钮,将弹出选项菜单,如图8.15所示,选择“参数设置”菜单项,该菜单消失,然后显示对应的子菜单,该子菜单为多选菜单组,如果,选择“使用背景”菜单项,该菜单将消失,同时,该菜单项将被设置为选中状态。再次打开“参数设置”菜单组时,可以看到“使用背景”菜单项被选中,如图8.16所示。
图8.15 显示选项菜单
图8.16 被选中的子菜单项
8.10 Android程序国际化
教学录像:光盘\TM\lx\8\Android程序国际化.exe
国际化的英文单词是Internationalization,因为该单词较长,有时简称为I18N,其中,I是该单词的第一个字母;18表示中间省略的字母个数;N是该单词的最后一个字母。Android程序国际化,是指程序可以根据系统所使用的语言,将界面中的文字翻译成与之对应的语言。这样,可以让程序更加通用。Android可以通过资源文件非常方便地实现程序的国际化。下面将以国际字符串资源为例,介绍如何实现Android程序的国际化。
在编写Android项目时,通常都是将程序中要使用的字符串资源放置在res\values目录下的strings.xml文件中,为了实现这些字符串资源的国际化,可以在Android项目的res目录下创建对应于各个语言的资源文件夹(例如,为了让程序兼容简体中文、繁体中文和美式英文,可以分别创建名称为values-zh-rCN、values-zh-rTW和values-en-rUS的文件夹),然后在每个文件夹中创建一个对应的strings.xml文件,并在该文件中定义对应语言的字符串即可。这样,当程序运行时,就会自动根据操作系统所使用的语言来显示对应的字符串信息。
下面通过一个具体的实例来说明Android程序的国际化。
例8.8 在Eclipse中创建Android项目,名称为8.8,实现在不同语言的操作系统下显示不同的文字。(实例位置:光盘\TM\sl\8\8.8)
(1)打开新建项目的res\values目录,在默认创建的strings.xml文件中,将默认添加的字符串变量hello删除,然后添加一个名称为word的字符串变量,内容是“Nothing is impossible to a willing heart.”,修改后的strings.xml文件的具体代码如下: