一、介绍
选项菜单,在默认显示的位置上,OptionsMenu显示在右上角ActionBar的位置
二、创建流程
- 在onCreateOptionsMenu(...)中生成上下文菜单。
- 在onOptionsItemSelected(...)中响应上下文菜单项
三、效果
四、代码
代码一【通过Menu组件创建菜单】
1、 在res目录下面创建一个名为menu的包,在menu包里面创建一个menu_basics.xml文件
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_1" android:orderInCategory="100" android:title="选项一" app:showAsAction="never" /> <item android:id="@+id/action_2" android:orderInCategory="100" android:title="选项二" app:showAsAction="never" /> <item android:id="@+id/action_3" android:orderInCategory="100" android:title="选项三" app:showAsAction="never" /> </menu>
2、在Java文件中添加下面方法
//创建菜单,加载我们之前定义的menu_main.xml布局文件 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_basics,menu); return true; } //当OptionsMenu被选中的时候处理具体的响应事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_1: Toast.makeText(MenuBasics.this,"选项一",Toast.LENGTH_SHORT).show(); return true; case R.id.action_2: Toast.makeText(MenuBasics.this,"选项二",Toast.LENGTH_SHORT).show(); return true; case R.id.action_3: Toast.makeText(MenuBasics.this,"选项三",Toast.LENGTH_SHORT).show(); return true; default: //do nothing } return super.onOptionsItemSelected(item); }
代码二【完全通过Java代码实现】
public class MenuOptions_Java extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { setContentView(R.layout.activity_main); super.onCreate(savedInstanceState); } @Override public boolean onCreateOptionsMenu(Menu menu) { /** * 第一个int类型的group ID参数:代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。 * 第二个int类型的item ID参数:代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。 * 第三个int类型的order ID参数:代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。 * 第四个String类型的title参数:表示选项中显示的文字。 */ menu.add(1001, 100, 1, "系统菜单"); menu.add(1001,101,2,"用户菜单"); menu.add(1001,102,2,"用户菜单"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 100: Toast.makeText(MenuOptions_Java.this,"选择了菜单一",Toast.LENGTH_SHORT).show(); break; case 101: Toast.makeText(MenuOptions_Java.this, "选择了菜单二",Toast.LENGTH_SHORT).show(); break; case 102: Toast.makeText(MenuOptions_Java.this, "选择了菜单三",Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); } }