在android studio中一般使用getMenuInflater()的目的是什么?

问题描述 投票:-1回答:3

我已经看到很多网站的最佳答案,这确实清楚我对getMenuInflater()的疑问,但找不到任何。请告诉我,选项菜单中getMenuInflater()的一般用途是什么?

android android-menu android-optionsmenu android-contextmenu
3个回答
0
投票

你用它来获得MenuInflaterMenuInflater可以“膨胀”菜单资源,将XML表示转换为MenuMenuItem对象的树。反过来,这些对象用于填充操作栏和Toolbar小部件之类的东西。


0
投票

此类用于将菜单XML文件实例化为Menu对象。

出于性能原因,菜单通胀严重依赖于在构建时完成的XML文件的预处理。因此,目前无法在运行时使用带有XmlPullParser的MenuInflater而不是纯XML文件;它只适用于从编译资源返回的XmlPullParser(R. something文件。)


0
投票

MenuInflater:doc link

此类用于将菜单XML文件实例化为Menu对象。

出于性能原因,菜单通胀严重依赖于在构建时完成的XML文件的预处理。因此,目前无法在运行时使用带有XmlPullParser的MenuInflater而不是纯XML文件;它只适用于从编译资源返回的XmlPullParser(R. something文件。)

简单的第一行意思是你可以使用XML文件动态添加/膨胀菜单。

膨胀上下文菜单的示例:

style.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/cut"
        android:title="Cut"
        app:showAsAction="always" />
    <item android:id="@+id/copy"
        android:title="Copy"
        app:showAsAction="always" />
    <item android:id="@+id/paste"
        android:title="Paste"
        app:showAsAction="always" />
</menu>

活动代码(Kotlin):

override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo)
        val menuInflater = this.activity!!.menuInflater
        menuInflater.inflate(R.menu.style, menu)
    }

结果:

Context menu result


推荐问答