📅  最后修改于: 2023-12-03 14:39:11.519000             🧑  作者: Mango
上下文菜单是Android UI中常见的一种菜单,在用户按下屏幕上某一元素会弹出。上下文菜单通常包括多个动作项,如复制和粘贴、删除、和其它更多选项。
在布局文件中给需要使用上下文菜单的View添加一个android:longClickable="true"
属性,该属性用来将该View长按时响应事件。如下:
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:longClickable="true" />
在Activity或Fragment中覆盖onCreateContextMenu()
方法,用来定义上下文菜单的项。如下:
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo?) {
super.onCreateContextMenu(menu, v, menuInfo)
val inflater = menuInflater
inflater.inflate(R.menu.context_menu, menu)
}
定义上下文菜单项的布局文件。如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_copy"
android:title="Copy" />
<item android:id="@+id/action_share"
android:title="Share" />
<item android:id="@+id/action_delete"
android:title="Delete" />
</menu>
在onCreate()
方法中为View注册上下文菜单。如下:
val textView = findViewById<TextView>(R.id.text_view)
registerForContextMenu(textView)
在Activity或Fragment中覆盖onContextItemSelected()
方法,用来响应上下文菜单的项。如下:
override fun onContextItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_copy -> {
// do copy action
true
}
R.id.action_share -> {
// do share action
true
}
R.id.action_delete -> {
// do delete action
true
}
else -> super.onContextItemSelected(item)
}
}
上下文菜单在Android UI中是一个常见且易用的交互方式,能够提供多个动作项让用户选择。开发者可以按照以上步骤使用上下文菜单来增强自己的应用程序。