Android选项菜单(OptionMenu)的创建 た 入场券 2024-04-18 18:59 17阅读 0赞 ## 选项菜单一般指的是activity中位于标题栏右侧的菜单,如图所示 ## ![右上角处三个竖点便是选项菜单的收起状态][70]右上角处三个竖点便是选项菜单的收起状态 ![这是展开状态][70 1]这是展开状态 选项菜单的创建一般分为3个步骤: **一、第一步创建选项菜单的选项卡,例如示例中的登陆,设置,退出等。** ![在res目录中创建menu文件夹,再在该文件夹中创建命名为main\_menu的xml布局文件(可自行命名)][res_menu_main_menu_xml] 在res目录中创建menu文件夹,再在该文件夹中创建命名为main\_menu的xml布局文件(可自行命名) <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_login" android:title="@string/menu_login"/> <item android:id="@+id/menu_setting" android:title="@string/menu_setting"/> <item android:id="@+id/menu_exit" android:title="@string/menu_exit"/> </menu> 在标签中写入各选项的id,文本等。 **二、第二步,在Java文件中重写onCreateOptionsMenu方法,导入menu布局文件** @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu,menu); return true; } 这样以来,在activity中便会出现选项菜单了。既然出现菜单项,自然需要 菜单项能够响应点击事件。 **三、第三步,在Java文件中重写onOptionsItemSelected方法,为每个选项添加监听事件** @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.menu_login: Toast.makeText(this,"登陆", Toast.LENGTH_SHORT).show(); break; case R.id.menu_setting: Toast.makeText(this,"设置", Toast.LENGTH_SHORT).show(); break; case R.id.menu_exit: Toast.makeText(this,"退出", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); } 在switch里的item.getItemId()表示的是被点击的选项的id,这里采用Toast来显示所点击的选项。 ![点击设置][70 2]点击设置 ![在活动底部便出现了内容为设置的Toast消息][Toast]在活动底部便出现了内容为设置的Toast消息。 也可设置其他监听事件,这里便不一一演示了。 **注!上述方法适用于需要用到选项菜单的活动很多的情况,如果只有少数几个活动需要用到选项菜单,则可在Java文件中重写onCreateOptionsMenu时使用menu的add (int groupId, int itemId, int order, int titleRes)方法,直接添加所需要的选项。** 参数描述: groudId:int型,是指组ID,用以批量地对菜单子项进行处理和排序 itemId:int型,是子项ID,是每一个菜单子项的唯一标识 order:int型,是指定菜单子项在选项菜单中的排列顺序 titlerRes:String型,是指选项的文本显示内容 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,1,0,"add登陆"); menu.add(0,2,1,"add设置"); menu.add(0,3,3,"add退出"); return true; } ![如图显示][70 3] 然后在执行第三步就可以了,值得一提的是,这时item.getItemId()获得的内容便是add方法中的第二个参数。 [70]: https://img-blog.csdn.net/20181008170856338?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzU5NjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70 [70 1]: https://img-blog.csdn.net/20181008170958609?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzU5NjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70 [res_menu_main_menu_xml]: https://img-blog.csdn.net/20181008171436772?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzU5NjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70 [70 2]: https://img-blog.csdn.net/20181008173138926?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzU5NjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70 [Toast]: https://img-blog.csdn.net/2018100817315764?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzU5NjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70 [70 3]: https://img-blog.csdn.net/20181008175011325?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzU5NjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70
还没有评论,来说两句吧...