一:Toast
1:作用
它是一种显示消息的机制,与对话框不同的是
(1)没有焦点,不能与用户交互
(2)显示时间短,不会打扰用户操作
(3)以浮动的View呈现,一段时间之后,自己消失
2:创建
(1)调用Toast的静态方法makeText(当前Activity对象,显示文本内容,显示时间),其中显示时间取值有2个,分别为Toast.LENGTH_LONG(长时间)和Toast.LENGTH_SHORT(短时间)。
(2)调用Toast的show()方法显示提示信息。
3:具体实现
Toast.makeText(MainActivity.this, "******项被按下", Toast.LENGTH_LONG).show(); //长时间 Toast.makeText(MainActivity.this, "******项被按下", Toast.LENGTH_SHORT).show(); //短时间 |
二:Menu
1:分类
◆选项菜单
一般的Android手机的通讯录中会有这样一个控件,当我们单击菜单键的时候,从底部弹出六个选项,我们把这六个选项叫做“选项菜单”
◆子菜单
通讯录中选项菜单的最后一个一般情况下显示的是“更多”,单击之后有出现了一些菜单,我们把“更多”叫做“子菜单”。不支持图标显示,不能嵌套子菜单
◆上下文菜单
当用户单击元素超过两秒的时间,会自动弹出的菜单,叫做“上下文菜单”。不支持图标显示
2:添加菜单项常用方式
(1)通过MenuInflater(菜单填充器)把在XML文件中定义好的样式应用到菜单上
(2)通过Java代码的add方法逐个添加菜单项
3:处理点击事件常用方式
调用onOptionsItemSelected(MenuItem)和onContextItemSelected(MenuItem)方法。
三:OptionsMenu--选项菜单
1:样式
最多只能显示6个菜单项,只支持文字与图标,多余6个的菜单项时,第六个会以“更多”的菜单项调出,但是他们不支持图标,只支持文字。
2:创建
通过在Activity中重写onCreateOptionsMenu(Menu menu)方法,并调用参数的add方法来添加菜单项,其中的参数解释如下:
add(groupId, itemId, order, titleRes)
①groupId:菜单项所属组ID,取值参照API;②itemId:菜单项ID;③order:菜单项的组织方式,取值参照API;④titleRes:显示在菜单项上的文字
3:添加菜单项具体实现
◆小于等于六个时
public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, 1, Menu.NONE, "Item1"); menu.add(Menu.NONE, 2, Menu.NONE, "Item2"); menu.add(Menu.NONE, 3, Menu.NONE, "Item3"); menu.add(Menu.NONE, 4, Menu.NONE, "Item4"); menu.add(Menu.NONE, 5, Menu.NONE, "Item5"); return true; } |
结果如图所示
◆大于六个时
public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, 1, Menu.NONE, "Item1"); menu.add(Menu.NONE, 2, Menu.NONE, "Item2"); menu.add(Menu.NONE, 3, Menu.NONE, "Item3"); menu.add(Menu.NONE, 4, Menu.NONE, "Item4"); menu.add(Menu.NONE, 5, Menu.NONE, "Item5"); menu.add(Menu.NONE, 6, Menu.NONE, "Item6"); menu.add(Menu.NONE, 7, Menu.NONE, "Item7"); menu.add(Menu.NONE, 8, Menu.NONE, "Item8"); return true; } |
结果如图所示,其余三个(6,7,8)在More后面
5:响应单击事件:
重写onOptionsItemSelected(MenuItem)方法,根据getItemId()方法得到被单击的菜单ID,从而相应不同的事件。
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: System.out.println("您点击的是菜单项1"); break; case 2: System.out.println("您点击的是菜单项2"); break; } return super.onOptionsItemSelected(item); } |
点击菜单项一之后,结果如图所示,在控制台输出
08-22 12:20:01.577: I/System.out(450): 您点击的是菜单项1 |
四:SubMenu--子菜单
1:样式
用户单击菜单项之后可以弹出的菜单的菜单(”更多“)。不能再有子菜单,也不支持图标显示。
2:属性
(1)setIcon:设置含有子菜单的菜单项的图标
(2)setHeaderTitle:设置弹出菜单的标题
(3)setheaderIcon:设置弹出菜单的图标
3:创建
(1)重写onCreateOptionsMenu(Menu menu)方法
(2)在主菜单的基础上,调用addSubMenu方法,将含有子菜单的菜单项添加。
(3)定义弹出子菜单样式
(4)添加子菜单的菜单项
4:具体实现:单击“更多“菜单项时弹出子菜单
public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, 1, Menu.NONE, "Item1"); menu.add(Menu.NONE, 2, Menu.NONE, "Item2"); menu.add(Menu.NONE, 3, Menu.NONE, "Item3"); menu.add(Menu.NONE, 4, Menu.NONE, "Item4"); menu.add(Menu.NONE, 5, Menu.NONE, "Item5"); SubMenu submenu = menu.addSubMenu(Menu.NONE, 6, Menu.NONE, "Item6"); submenu.setHeaderIcon(R.drawable.ic_launcher); submenu.setIcon(R.drawable.ic_launcher); submenu.setHeaderTitle("我是弹出的菜单"); submenu.add(Menu.NONE, 7, Menu.NONE, "Item6"); submenu.add(Menu.NONE, 8, Menu.NONE, "Item7"); submenu.add(Menu.NONE, 9, Menu.NONE, "Item8"); return true; } |
结果如图所示
5:响应单击事件同上。
五:ContextMenu--上下文菜单
1:样式
用户单击元素超过两秒之后弹出的菜单。
2:属性同上
3:创建同上,只是重写的是onContextItemSelected(MenuItem)方法。
六:综合运用
功能:长按主界面按钮,弹出一个上下文菜单,其中设置一项为子菜单,单击之后弹出菜单,再单击一项时,短时间显示提示信息。
public class contextMenu extends Activity{ private Button button;//声明按钮 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.contextmenu); //根据Id查找控件 button =(Button) findViewById(R.id.button1); //注册,让Button会启动上下文菜单 registerForContextMenu(button); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { //为上下文菜单添加菜单项 menu.add(Menu.NONE, 1, Menu.NONE, "Item1"); menu.add(Menu.NONE, 2, Menu.NONE, "Item2"); menu.add(Menu.NONE, 3, Menu.NONE, "Item3"); menu.add(Menu.NONE, 4, Menu.NONE, "Item4"); menu.add(Menu.NONE, 5, Menu.NONE, "Item5"); //菜单项六为子菜单,单击之后出现7,8,9 SubMenu submenu = menu.addSubMenu(Menu.NONE, 6, Menu.NONE, "Item6"); submenu.setHeaderIcon(R.drawable.ic_launcher); submenu.setIcon(R.drawable.ic_launcher); submenu.setHeaderTitle("我是弹出的菜单"); submenu.add(Menu.NONE, 7, Menu.NONE, "Item7"); submenu.add(Menu.NONE, 8, Menu.NONE, "Item8"); submenu.add(Menu.NONE, 9, Menu.NONE, "Item9"); super.onCreateContextMenu(menu, v, menuInfo); } //添加单击事件 @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 8: Toast.makeText(contextMenu.this, "您单击了菜单项8", Toast.LENGTH_LONG).show(); break; } return super.onContextItemSelected(item); } } |
结果:
Android中的控件使用方法也许有些多,勤练习呗。。。又没有捷径?自己�道儿吧。。。你说呢?