Kotlin开发Android时如何禁用并隐藏菜单栏中的指定item?
错误原因
你之前的代码报错是因为findViewById()仅适用于查找继承自View类的布局组件,而菜单项属于MenuItem类型,不属于View体系,因此触发类型不匹配的错误。
正确实现代码
你可以直接从MaterialToolbar的menu属性中获取对应菜单项,再配置显隐和可用状态:
// 初始化Toolbar后执行以下代码 val saveLogItem = topAppBar.menu.findItem(R.id.save_log) // 隐藏菜单项 saveLogItem.isVisible = false // 如需同时禁用点击(隐藏状态下可省略,若后续要恢复显示可以搭配使用) saveLogItem.isEnabled = false
调用时机说明
因为你已经在Toolbar的XML布局中通过app:menu="@menu/menu_main"指定了菜单文件,Toolbar会在初始化时自动完成菜单填充,所以你只需要在onCreate生命周期中完成Toolbar初始化后,直接调用上述代码即可生效。如果是后续运行时需要动态切换菜单项显隐,也可以随时调用上述代码修改属性。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

