Android控件 Menu和Toast(转载)
-
一:Toast
1:作用
它是一种显示消息的机制,与对话框不同的是
(1)没有焦点,不能与用户交互
(2)显示时间短,不会打扰用户操作
(3)以浮动的View呈现,一段时间之后,自己消失
2:创建
(1)调用Toast的静态方法makeText(当前Activity对象,显示文本内容,显示时间),其中显示时间取值有2个,分别为Toast.LENGTH_LONG(长时间)和Toast.LENGTH_SHORT(短时间)。
(2)调用Toast的show()方法显示提示信息。
3:具体实现
1.Toast.makeText(MainActivity.this,"******项被按下", Toast.LENGTH_LONG).show();//长时间2.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:添加菜单项具体实现
◆小于等于六个时
1.publicbooleanonCreateOptionsMenu(Menu menu) {2.menu.add(Menu.NONE,1, Menu.NONE,"Item1");3.menu.add(Menu.NONE,2, Menu.NONE,"Item2");4.menu.add(Menu.NONE,3, Menu.NONE,"Item3");5.menu.add(Menu.NONE,4, Menu.NONE,"Item4");6.menu.add(Menu.NONE,5, Menu.NONE,"Item5");7.returntrue;8.}结果如图所示
◆大于六个时
01.publicbooleanonCreateOptionsMenu(Menu menu) {02.menu.add(Menu.NONE,1, Menu.NONE,"Item1");03.menu.add(Menu.NONE,2, Menu.NONE,"Item2");04.menu.add(Menu.NONE,3, Menu.NONE,"Item3");05.menu.add(Menu.NONE,4, Menu.NONE,"Item4");06.menu.add(Menu.NONE,5, Menu.NONE,"Item5");07.menu.add(Menu.NONE,6, Menu.NONE,"Item6");08.menu.add(Menu.NONE,7, Menu.NONE,"Item7");09.menu.add(Menu.NONE,8, Menu.NONE,"Item8");10.returntrue;11.}结果如图所示,其余三个(6,7,8)在More后面
5:响应单击事件:
重写onOptionsItemSelected(MenuItem)方法,根据getItemId()方法得到被单击的菜单ID,从而相应不同的事件。
01.@Override02.publicbooleanonOptionsItemSelected(MenuItem item) {03.switch(item.getItemId()) {04.case1:05.System.out.println("您点击的是菜单项1");06.break;07.case2:08.System.out.println("您点击的是菜单项2");09.break;10.}11.returnsuper.onOptionsItemSelected(item);12.}点击菜单项一之后,结果如图所示,在控制台输出
1.08-2212: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:具体实现:单击“更多“菜单项时弹出子菜单
01.publicbooleanonCreateOptionsMenu(Menu menu) {02.menu.add(Menu.NONE,1, Menu.NONE,"Item1");03.menu.add(Menu.NONE,2, Menu.NONE,"Item2");04.menu.add(Menu.NONE,3, Menu.NONE,"Item3");05.menu.add(Menu.NONE,4, Menu.NONE,"Item4");06.menu.add(Menu.NONE,5, Menu.NONE,"Item5");07.08.SubMenu submenu = menu.addSubMenu(Menu.NONE,6, Menu.NONE,"Item6");09.10.submenu.setHeaderIcon(R.drawable.ic_launcher);11.submenu.setIcon(R.drawable.ic_launcher);12.submenu.setHeaderTitle("我是弹出的菜单");13.14.submenu.add(Menu.NONE,7, Menu.NONE,"Item6");15.submenu.add(Menu.NONE,8, Menu.NONE,"Item7");16.submenu.add(Menu.NONE,9, Menu.NONE,"Item8");17.returntrue;18.}结果如图所示
5:响应单击事件同上。
五:ContextMenu--上下文菜单
1:样式
用户单击元素超过两秒之后弹出的菜单。
2:属性同上
3:创建同上,只是重写的是onContextItemSelected(MenuItem)方法。
六:综合运用
功能:长按主界面按钮,弹出一个上下文菜单,其中设置一项为子菜单,单击之后弹出菜单,再单击一项时,短时间显示提示信息。
01.publicclasscontextMenuextendsActivity{02.privateButton button;//声明按钮03.@Override04.protectedvoidonCreate(Bundle savedInstanceState) {05.super.onCreate(savedInstanceState);06.setContentView(R.layout.contextmenu);07.//根据Id查找控件08.button =(Button) findViewById(R.id.button1);09.//注册,让Button会启动上下文菜单10.registerForContextMenu(button);11.}12.@Override13.publicvoidonCreateContextMenu(ContextMenu menu, View v,14.ContextMenuInfo menuInfo) {15.//为上下文菜单添加菜单项16.menu.add(Menu.NONE,1, Menu.NONE,"Item1");17.menu.add(Menu.NONE,2, Menu.NONE,"Item2");18.menu.add(Menu.NONE,3, Menu.NONE,"Item3");19.menu.add(Menu.NONE,4, Menu.NONE,"Item4");20.menu.add(Menu.NONE,5, Menu.NONE,"Item5");21.//菜单项六为子菜单,单击之后出现7,8,922.SubMenu submenu = menu.addSubMenu(Menu.NONE,6, Menu.NONE,"Item6");23.24.submenu.setHeaderIcon(R.drawable.ic_launcher);25.submenu.setIcon(R.drawable.ic_launcher);26.submenu.setHeaderTitle("我是弹出的菜单");27.28.submenu.add(Menu.NONE,7, Menu.NONE,"Item7");29.submenu.add(Menu.NONE,8, Menu.NONE,"Item8");30.submenu.add(Menu.NONE,9, Menu.NONE,"Item9");31.super.onCreateContextMenu(menu, v, menuInfo);32.}33.//添加单击事件34.@Override35.publicbooleanonContextItemSelected(MenuItem item) {36.switch(item.getItemId()) {37.case8:38.Toast.makeText(contextMenu.this,"您单击了菜单项8", Toast.LENGTH_LONG).show();39.break;40.}41.returnsuper.onContextItemSelected(item);42.}43.}结果:
Android中的控件使用方法也许有些多,勤练习呗。。。又没有捷径?自己蹚道儿吧。。。你说呢?





浙公网安备 33010602011771号