前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin安卓开发学习(5)

Kotlin安卓开发学习(5)

作者头像
摸鱼的G
发布2023-02-22 15:04:26
5140
发布2023-02-22 15:04:26
举报
文章被收录于专栏:火属性小虫

Kotlin安卓开发学习(5)

在Activity中使用Menu

想要在activity内使用菜单,需要专门去创建菜单布局,菜单布局被统一放在menu资源文件夹下,通过创建Menu resource file来创建菜单布局。

内部代码如下:

代码语言:javascript
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 <item
   android:id="@+id/add_item"
   android:title="Add"/>
 <item
   android:id="@+id/remove_item"
   android:title="Remove"/>
</menu>

item表示菜单内部菜单项,需要指定id和内容title

使用菜单布局

在activity内重写onCreateOptionsMenu()方法使用:

代码语言:javascript
复制
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
   menuInflater.inflate(R.menu.main, menu)
   return true
}

这里的menuInflater实际上是调用了父类的getMenuInflater()方法得到了对象,在调用它的inflate()方法,其传入两个参数第一个参数用于指定我们通过哪一个资源文件来创建菜单,第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中。最后给这个方法返回true,表示允许创建的菜单显示出来,如果返回了false,创建的菜单将无法显示。

当然,光创建出菜单不行,我们也得给菜单添加点击事件,重写onOptionsItemSelected():

代码语言:javascript
复制
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
}

这里我们通过itemid来判断哪个菜单项被选择了。效果如下:

更多的菜单

上面的菜单只适配于activity,在右上角显示菜单,但实际使用中我们可能会遇上长按某块区域后,在其旁边显示菜单项。这里我们就需要使用PopupMenu

首先,需要完成上诉操作,我们需要设置长按事件(废话)。在长按事件中,我们需要创建PopupMenu并设置其inflate和OnMenuItemClickListener,来实现效果,具体如下:

代码语言:javascript
复制
var popupMenu = PopupMenu(this, v)
        popupMenu.menuInflater.inflate(R.menu.menu, popupMenu.menu)
        popupMenu.setOnMenuItemClickListener { menuItem ->
            when (menuItem.itemId) {
                R.id.edit -> makeEdit(v)
                R.id.delete -> makeDelete(v)
                else -> true
            }
        }
popupMenu.show()

这里我们最后使用show()方法来显示菜单。别的设置方法与之前的菜单基本相同

销毁一个Activity

使用finish()方法可以销毁一个Activity

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kotlin安卓开发学习(5)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档