📜  如何在 Android 中实现选项菜单(1)

📅  最后修改于: 2023-12-03 15:08:33.186000             🧑  作者: Mango

如何在 Android 中实现选项菜单

Android 中的选项菜单是指位于屏幕上方的菜单项,用于提供应用程序相关操作的快速访问。这里是一些步骤来实现选项菜单。

1. 创建菜单资源文件

使用 res > menu 目录下的 XML 文件来定义选项菜单。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never" />
</menu>
2. 显示菜单

要显示选项菜单,使用 onCreateOptionsMenu() 方法。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

在这个例子中,我们反序列化 menu/main.xml 资源到 Menu 对象中并返回 true 告诉系统菜单已经创建。

3. 处理菜单点击事件

当菜单上的项目被选择时要采取某些操作,可以通过重写 onOptionsItemSelected() 方法来实现。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        // Do something
        return true;
    }

    return super.onOptionsItemSelected(item);
}

在这个例子中,我们检查被点击的项的 ID 是否 R.id.action_settings,如果是,将执行相关操作。如果 ID 不是 R.id.action_settings,则调用父类的 onOptionsItemSelected() 方法。

4. 显示溢出菜单

如果在屏幕上没有足够的空间来显示所有选项,Android 将自动显示溢出菜单。这可以通过以下两种方式实现:

添加 showAsAction 属性到 XML。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:icon="@drawable/ic_menu_settings"
        android:showAsAction="always" />    // 这个属性将菜单项放在工具栏上

    <item
        android:id="@+id/action_about"
        android:title="@string/action_about"
        android:icon="@drawable/ic_menu_about" />
</menu>

在代码中强制显示。

可以通过使用 MenuItemCompat 类的静态方法 setShowAsAction(),将选项菜单项显示在工具栏上。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);

    MenuItem settingsItem = menu.findItem(R.id.action_settings);
    MenuItemCompat.setShowAsAction(settingsItem, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);

    return true;
}

在这个例子中,我们通过 menu.findItem(R.id.action_settings) 查找 R.id.action_settings 菜单项,然后将 MenuItemCompat.SHOW_AS_ACTION_ALWAYS 作为参数传递给 MenuItemCompat.setShowAsAction() 方法。

以上就是实现选项菜单的全部内容。参考以上步骤,轻松实现选项菜单,提高应用程序的易用性和用户体验。