2024年6月19日发(作者:)
《Android基础应用》
AndroidUI之菜单对话框
本章任务
使用Android开发菜单应用
使用Android开发XML菜单
使用Android开发对话框应用
本章目标
掌握Android中的菜单
掌握Android中的对话框
1. Android基本控件菜单
菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供
了统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口
Android系统支持三种菜单
选项菜单(Option Menu)
子菜单(Submenu)
快捷菜单(Context Menu)
1.1 选项菜单
选项菜单是一种经常被使用的Android系统菜单
打开方式:通过“菜单键”(MENU key)打开
AndroidUI之菜单对话框
选项菜单分类
图标菜单(Icon Menu)
图标菜单能够同时显示文字和图标的菜单,最多支持6个子项
图标菜单不支持单选框和复选框
扩展菜单(Expanded Menu)
扩展菜单是在图标菜单子项多余6个时才出现,通过点击图标菜单最后的子项“More”才能
打开,扩展菜单是垂直的列表型菜单
不能够显示图标
支持单选框和复选框
创建一个选项菜单的步骤
覆盖Activity的onCreateOptionsMenu(Menu menu)函数
调用menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为
菜单设置图标
当菜单项()被选择时,我们可以通过覆盖Activity的onOptionsItemSeleted()方法来响应
事件
示例一
- 2 -
AndroidUI之菜单对话框
public boolean onCreateOptionsMenu(Menu menu) {
}
( "关于");
( "退出");
return teOptionsMenu(menu);
public boolean onOptionsItemSelected(MenuItem item) {
}
switch (mId()) {
case 1:
}
return onsItemSelected(item);
setTitle("关于");
break;
setTitle("退出!");
break;
case 2:
示例的实现结果
- 3 -
AndroidUI之菜单对话框
onCreateOptionsMenu()函数
函数返回值:布尔值,表示是否显示该函数中设置的菜单
参数:Menu对象
onCreateOptionsMenu函数仅在第一次使用菜单时被调用一次
Menu对象的add()方法添加菜单子项,这个函数有四个重载函数
public MenuItem add(CharSequence title)
参数:指定菜单上的显示文字
public MenuItem add(int titleRes)
参数:菜单标题的引用通过中添加
public MenuItem add(int groupId, int itemId, int order, CharSequence title);
public MenuItem add(int groupId, int itemId, int order, int titleRes);
groudId:是指组ID,用以批量地对菜单子项进行处理和排序
itemId:是子项ID,是每一个菜单子项的唯一标识
order:指定菜单子项在选项菜单中的排列顺序
示例二
- 4 -
AndroidUI之菜单对话框
private static final int ITEM_COLOR = ;
private static final int ITEM_MUSIC = + 1;
public boolean onCreateOptionsMenu(Menu menu) {
}
(0, ITEM_COLOR, 0, "颜色");
(0, ITEM_MUSIC, 0, );
("关于");
();
return teOptionsMenu(menu);
设置菜单的图标
public MenuItem setIcon(int iconRes)
private static final int ITEM_COLOR = ;
private static final int ITEM_MUSIC = + 1;
public boolean onCreateOptionsMenu(Menu menu) {
}
(0, ITEM_COLOR, 0, "颜色").setIcon();
(0, ITEM_MUSIC, 0,
("关于").setIcon();
().setIcon();
return teOptionsMenu(menu);
).setIcon();
示例的实现结果
- 5 -
AndroidUI之菜单对话框
菜单多余六个菜单时显示扩展菜单
不能够显示图标
支持单选框和复选框
(0, 5, 0, "关于1").setIcon();
(1, 6, 0, "关于2").setIcon();
// (1,7,0,"关于3").setCheckable(true);
// (1,8,0,"关于4").setCheckable(true);
(1, 7, 0, "关于3").setIcon();
(1, 8, 0, "关于4").setIcon();
upCheckable(1, true, true);
public void setGroupCheckable(int group, boolean checkable, boolean exclusive);
在setGroupCheckable()方法中,第一个参数为要设置的groupId,第二个为菜单项是否可选,
最后一个参数是是否为单选
切换单复选的选择效果需要在onOptionsItemSelected中设置
- 6 -
AndroidUI之菜单对话框
public boolean onOptionsItemSelected(MenuItem item) {
switch (mId()) {
case 6:
case 7:
case 8:
}
if (ked())
cked(false);
cked(true);
else
break;
onPrepareOptionsMenu()函数,能够动态的添加、删除菜单子项,或修改菜单的标题、图标和
可见性等内容 ,函数的返回值的含义与onCreateOptionsMenu()函数相同
当用户第一次按Menu键时,先执行onCreateOptionsMenu( ),然后执行
onPrepareOptionsMenu();当用户第二次,第三次,第N次按Menu建时,执行
onPrepareOptionsMenu(),因此我们可以在onPrepareOptionsMenu()中处理每次的变化
public boolean onPrepareOptionsMenu(Menu menu) {
em(ITEM_COLOR).setVisible(false);
em(ITEM_MUSIC).setTitle("音乐1");
return areOptionsMenu(menu);
}
1.2 子菜单
子菜单就是将相同功能的分组进行多级显示的一种菜单
子菜单是能够显示更加详细信息的菜单子项
菜单子项使用了浮动窗体的显示形式,能够更好适应小屏幕的显示方式
子菜单不支持嵌套
- 7 -
AndroidUI之菜单对话框
创建一个子菜单的步骤
覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法
来添加子菜单
调用SubMenu的add()方法,添加子菜单
覆盖onContextItemSelected()方法,响应子菜单的单击事件
示例
public boolean onCreateOptionsMenu(Menu menu) {
}
SubMenu file = Menu("文件");
SubMenu edit = Menu("编辑");
(0, ITEM_NEW, 0, "新建");
(0, ITEM_OPEN, 0, "打开");
return teOptionsMenu(menu);
SubMenu是Menu的子类
比较常用的方法有:
- 8 -
AndroidUI之菜单对话框
setHeaderIcon()、setHeaderTitle()
设置关联Intent打开另一个Activity
public MenuItem setIntent(Intent intent)
public boolean onCreateOptionsMenu(Menu menu) {
}
SubMenu file = Menu("文件");
SubMenu edit = Menu("编辑");
(0, ITEM_NEW, 0, "新建");
(0, ITEM_OPEN, 0, "打开");
derIcon();
derTitle("文件操作");
MenuItem item00 = ("菜单案例一");
// 为菜单项设置关联的Activity
ent(new Intent(this, ));
return teOptionsMenu(menu);
示例的实现结果如图
- 9 -
AndroidUI之菜单对话框
练习——菜单应用
需求说明:
按图创建菜单
每个菜单都有子菜单
性别子菜单使用单选
颜色子菜单使用复选
启动程序子菜单需要使用关联Intent
- 10 -
AndroidUI之菜单对话框
1.3 快捷菜单
快捷菜单也可称为上下文菜单,同样采用了动态窗体的显示方式,与子菜单的实现方式相
同,但两种菜单的启动方式却截然不同
快捷菜单类似于普通桌面程序中的“右键菜单”,当用户点击界面元素超过2秒后,将启
动注册到该界面元素的快捷菜单
创建一个快捷菜单的步骤
覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜
单项
覆盖onContexItemSelected()方法,响应菜单单击事件
调用registerForContexMenu()方法为视力注册上下文菜单
示例
public void onCreateContextMenu(ContextMenu menu, View v,
}
ContextMenuInfo menuInfo) {
(0, MENU1, 0, "红色");
(0, MENU2, 0, "绿色");
(0, MENU3, 0, "蓝色");
// 将三个菜单项设为单选菜单项
upCheckable(0, true, true);
//设置上下文菜单的标题、图标
derIcon();
derTitle("选择背景色");
teContextMenu(menu, v, menuInfo);
- 11 -
AndroidUI之菜单对话框
public boolean onContextItemSelected(MenuItem item) {
}
switch (mId())
{
}
return extItemSelected(item);
case MENU1:
cked(true);
kgroundColor();
break;
cked(true);
kgroundColor();
break;
cked(true);
kgroundColor();
break;
case MENU2:
case MENU3:
public void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
setContentView(tmenudemo1);
// 为文本框注册上下文菜单
txt = (TextView) findViewById();
registerForContextMenu(txt);
}
示例的实现结果如图
- 12 -
AndroidUI之菜单对话框
onCreateContextMenu函数
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
menu:需要显示的快捷菜单
v:V是用户选择的界面元素
menuInfo:menuInfo是所选择界面元素的额外信息
onCreateOptionsMenu函数仅在第一次使用菜单时被调用一次
onCreateContextMenu函数在每次启动都将会被调用一次
XML菜单
Android不仅支持代码创建菜单,同时还支持xml配置菜单
创建一个XML菜单的步骤
在/res/目录下新建menu文件夹,用于存储Menu XML资源文件
在/res/menu/下新建菜单界面描述文件
重写Activity中onCreateOptionsMenu(Menu menu)方法
- 13 -
而
,
1.4
AndroidUI之菜单对话框
示例
创建xml文件使用Android xml向导
创建选项菜单
}
return teOptionsMenu(menu);
MenuInflater inflater = uInflater();
e(ldemo, menu);
public boolean onCreateOptionsMenu(Menu menu) {
创建子菜单
在
- 14 -
AndroidUI之菜单对话框
创建单选子菜单、多选子菜单
使用group标签,设置属性android:checkableBehavior
single设置为单选,all为多选,none为普通选项
练习——菜单应用
需求说明:
- 15 -
AndroidUI之菜单对话框
按图创建xml菜单
每个菜单都有子菜单
性别子菜单使用单选
颜色子菜单使用复选
启动程序子菜单启动关联Intent
2. 对话框
一个对话框一般是一个出现在当前Activity之上的一个小窗口. 处于下面的Activity失去焦点,
对话框接受所有的用户交互. 对话框一般用于提示信息和与当前应用程序直接相关的小功能.
在Android中Dialog是创建对话框的基础,我们不能直接实例化一个Dialog而是使用它的子类
Android API 支持下列类型的对话框对象
警告对话框 AlertDialog
进度对话框 ProgressDialog
日期选择对话框 DatePickerDialog
时间选择对话框 TimePickerDialog
2.1 AlertDialog警告对话框
AlertDialog主要用来提示一些文本信息
可以有0到3个按钮, 一个单选框或复选框的列表的对话框. 警告对话框可
以是自定义的
使用AlertDialog来完成下面几种任务
显示提示信息,让用户选择是或否
从Dialog中提供的列表里选择一个Item项
从Dialog中提供的列表里选择多个Item项
- 16 -
AndroidUI之菜单对话框
…
创建AlertDialog的步骤
创建一个r对象,该对象是AlertDialog的创建器
调用r的方法,设置要创建的Dialog的参数,如图标,几个按钮,显示什
么内容等
对按钮设置回调函数(因为android中的dialog都是异步的,所以要回调函数)
调用r的create()方法,让Builder生成dialog对象
使用show()方法将dialog显示出来
弹出一个消息框
public void onClick(View v) {
}
// 创建一个r对象
r builder = new r(
);
//设置对话框图标
n(_default_icon);
// 设置对话框的标题
le("AlertDialog标题");
// 设置对话框显示的内容
sage("AlertDialog简单消息。。。");
// 为对话框设置一个”确定“按钮
itiveButton("确定", null);
// 创建对话框
AlertDialog ad = ();
// 显示对话框
();
如果不进行设置。。。。无文字,无图标,无按钮。。只能回退。。。
- 17 -
AndroidUI之菜单对话框
链式方法调用
方法调用返回的是该方法的对象引用,因而这个引用可以产生下一个方法调用;如此而
已,生成一个调用链。
适当使用方法链式调用可以简化代码的编写,提高编程效率
public void onClick(View v) {
// 创建一个r对象
r builder = new r(
);
//设置对话框图标
n(_default_icon);
le("AlertDialog标题")
.setMessage("AlertDialog简单消息。。。")
.setPositiveButton("确定", new
EmptyListener()).create()
}
.show();
- 18 -
AndroidUI之菜单对话框
带确认和取消按钮的对话框
对话框支持最多三个按钮
确定setPositiveButton
取消setNegativeButton
忽略setNeutralButton
public void onClick(View v) {
// 创建一个r对象
r builder = new r(
);
.setMessage("AlertDialog确认消息。。。")
.setPositiveButton("确定", new EmptyListener())
le("AlertDialog标题")
.setNegativeButton("取消", new
EmptyListener()).create()
}
.show();
- 19 -
AndroidUI之菜单对话框
对话框按钮监听
{
}
@Override
public void onClick(DialogInterface dialog, int which) {
}
setTitle("被点击");
// 空的监听类
private class EmptyListener implements kListener
列表类 对话框
分为列表对话框,单选列表对话框,多选列表对话框
列表对话框
public Builder setItems(int itemsId, final OnClickListener listener)
- 20 -
AndroidUI之菜单对话框
itemsId为字符串数组资源
public Builder setItems(CharSequence[] items, final OnClickListener listener)
单选列表对话框
public Builder setSingleChoiceItems(
CharSequence[] items, int checkedItem, final OnClickListener listener)
多选列表对话框
public Builder setMultiChoiceItems(CharSequence[] items,
boolean[] checkedItems, , final OnClickListener listener)
设置单选只需要将setItems方法改为:setSingleChoiceItems,同时多一个参数checkItem表
示默认选中第几个选项即可。不过这边跟setItems不一样的是,setItems时当用户选中某个
Item时会触发回调函数同时关闭窗口,而setSingleChoiceItems当用户选中某个Item时会触
发回调函数,但是不会关闭窗口,用户需要通过设置3个按钮中任意一个来关闭窗口。
设置多选框跟单选框差不多,它调用方法:setMultiChoiceItems。但是参数有个地方不一样,
因为单选的情况下只有一个Item被选中所以可以用一个以0开始的数字来表示选中第几个,但
是多选有可能选中多个所以用一个boolean数组来存放各个Item的状态,选中为true,否则为
false。
}
@Override
public void onClick(DialogInterface dialog,
}
int which) {
String msg = "选择的id是:" + which + ",内容为:"
+ itemsDays[which];
xt(, msg,
_LONG).show();
public void onClick(View v) {
// 创建一个r对象
r builder = new r(
);
n(_default_icon);
le("列表对话框");
ms(itemsDays,
new kListener() {
});
().show();
- 21 -
AndroidUI之菜单对话框
@Override
public void onClick(DialogInterface dialog,
}
int which) {
String msg = "选择的id是:" + which + ",内容为:"
+ itemsDays[which];
xt(, msg,
_LONG).show();
public void onClick(View v) {
// 创建一个r对象
r builder = new r(
);
n(_default_icon);
le("单选列表对话框");
gleChoiceItems(itemsDays, 2,
new kListener() {
});
itiveButton("确定", new
EmptyListener()).create()
}
.show();
- 22 -
AndroidUI之菜单对话框
public void onClick(View v) {
// 创建一个r对象
r builder = new r(
);
n(_default_icon);
le("多选列表对话框");
tiChoiceItems(itemsDays, itemsSelectedDays,
new iChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
}
int which, boolean isChecked) {
String msg = "";
for (int i = 0; i < ;
}
xt(, msg,
_SHORT).show();
if (itemsSelectedDays[i]) {
}
msg += itemsDays[i]+".";
i++) {
});
itiveButton("确定", new
EmptyListener()).create()
}
.show();
自定义对话框
- 23 -
AndroidUI之菜单对话框
public void onClick(View source)
{
// 设置对话框的图标
n();
// 设置对话框的标题
le("自定义普通对话框");
//装载/res/layout/界面布局
TableLayout loginForm = (TableLayout)getLayoutInflater()
.inflate( , null);
// 设置对话框显示的View对象
w(loginForm);
// 为对话框设置一个“确定”按钮
itiveButton("登录"
// 为按钮设置监听器
, new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//此处可执行登录处理
}
});
// 为对话框设置一个“取消”按钮
ativeButton("取消"
, new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//取消登录,不做任何事情。
}
});
//创建、并显示对话框
- 24 -
AndroidUI之菜单对话框
练习——对话框应用
需求说明:
按图实现页面布局
第一个按钮使用 AlertDialog创建普通对话框,在第一个EditText中显示
用户选择
第二个按钮使用 AlertDialog创建列表对话框,根据用户选择设置第一个
TextView的背景颜色
- 25 -
AndroidUI之菜单对话框
总结
创建选项菜单的步骤?
创建XML菜单的步骤?
如何创建简单对话框 ?
如何创建列表对话框 ?
- 26 -
发布者:admin,转转请注明出处:http://www.yc00.com/web/1718738131a2752252.html
评论列表(0条)