Activity 使用 Menu


要使用菜单 Menu,首先在 res 目录下新建一个 menu 文件夹,右键 menu 文件夹 - New - Menu resource file,在该文件夹下新建一个名为“main”的菜单文件,

然后在 main.xml 中添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/add_item"
        android:title="Add"
        tools:ignore="HardcodedText" />
    <item
        android:id="@+id/remove_item"
        android:title="Remove"
        tools:ignore="HardcodedText" />
</menu>

这里创建两个菜单项,其中 <item> 标签用来创建具体的某一个菜单项,然后通过 android:id 给这个菜单项指定一个唯一的标识符,通过 android:title 给这个菜单项指定名称

在 Activity 中重写 onCreateOptionsMenu() 方法

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    
    
    menuInflater.inflate(R.menu.main, menu)
    return true
}

我们在 onCreateOptionsMenu() 方法中编写的 menuInflater 实际上调用了父类的 getMenuInflater() 方法,再调用它的 inflate() 方法,给当前 Activity 创建菜单

inflate() 方法接收两个参数:第一个参数用于指定我们通过哪一个资源文件来创建菜单,第二个参数用于指定我们的菜单项将添加到哪一个 Menu 对象当中,这里直接使用 onCreateOptionsMenu() 方法中传入的 menu 参数。最后这个方法返回 true,表示允许创建的菜单显示出来,返回 false 将无法显示

仅仅让菜单可用是不够的,还要定义菜单的响应事件,在 Activity 中重写 onOptionsItemSelected() 方法

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    
    
    when (item.itemId) {
    
    
        R.id.add_item -> Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show()
        R.id.remove_item -> Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show()
    }
    return true
}

在 onOptionsItemSelected() 方法中,我们通过调用 item.itemId 来判断点击的是哪一个菜单项,点击不同的菜单项将显示不同的提示


猜你喜欢

转载自blog.csdn.net/CSDN_handsome/article/details/120473272