文档链接:https://developer.android.com/guide/fragments/appbar
目标:掌握Activity,Fragment关于Toolbar实现标题栏中菜单的相关操作。
自己的demo示例项目地址:https://github.com/MrXieD/BaseFramework/tree/master/contactroom
其中重要的几个地方:
1.如果项目中在宿主Activity中统一实现一个Toolbar即可,那么,对于不同Fragment,不同的菜单内容的实现方式应该在Fragment中调用Android系统菜单的API。
如:
setHasOptionsMenu
,
onPrepareOptionsMenu
,
onCreateOptionsMenu
,
onOptionsItemSelected
这几个。
2.对于使用1中的方式,动态修改菜单状态,应该是在onPrepareOptionsMenu
方法中去对相应的菜单项做一些修改,此方法在每次菜单栏展开的时候都会调用。注意:此处的修改指的是菜单栏的显示,隐藏,置灰等状态修改,并非菜单栏结构的改动。如文档所示:
3.如果需要修改菜单栏,则需要
requireActivity().invalidateOptionsMenu()
,最重要的是此方法会导致onCreateOptionsMenu
重新调用。如文档所示:
4.如果Fragment需要自己在布局中添加Toolbar来实现自己的标题栏,那么不要用上面提到的系统API。
如文档所说:
此时,应该直接操作自己布局的toolbar的一些见名知意的API。如:
viewBinding.myToolbar.inflateMenu(R.menu.sample_menu)
网友评论