Activity中使用Menu

发布时间 2023-05-21 16:38:40作者: Devil'soul

手机毕竟和电脑不同,它的屏幕空间是十分有限的,如果你的Activity中有大量的菜单需要显示,可以使用Menu来实现。

首先在res资源目录下新建一个menu文件夹,并在该文件夹下新加一个文件main.xml

 

在main.xml中定义菜单选项资源

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add" android:title="add"/>
    <item android:id="@+id/remove" android:title="remove"/>
</menu>

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

接着在对应的Activity中重写onCreateOptionsMenu方法来实现创建菜单

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        Log.d("MainActivity", "onCreateOptionsMenu")
        menuInflater.inflate(R.menu.main, menu)
        return true  //return false则表示不显示菜单栏
}

其中inflate方法有两个参数,第一个参数用于指定我们通过哪一个资源文件来创建菜单,第二个参数用于指定菜单项将添加到哪一个Menu对象中。最后方法返回true表示允许创建的菜单显示出来,如果返回false,创建出来的菜单将无法显示。

接下来我们在Activity中重写菜单的响应事件

override fun onOptionsItemSelected(item: MenuItem): Boolean {
     when (item.itemId) {
            R.id.add -> Toast.makeText(this, "you click add", Toast.LENGTH_LONG).show()
            R.id.remove -> Toast.makeText(this, "you click remove", Toast.LENGTH_LONG).show()
        }
        return false
}

这样基本的Menu功能就已经实现了。

运行程序,你会发现在标题栏的右侧多了一个三点的符号,这个就是菜单按钮了。

 

 点击对应的菜单,可以触发对应的弹框动作

 

 至此,Action中的Menu的基本功能就讲解结束了。