We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
常用的菜单有下面几种
弹出式菜单 这就是本篇介绍重点。
菜单组 菜单也是可以分组的,菜单也可以在组内设置单选项和多选项的。这里暂时略
基于 Intent 的菜单项 和Intent关联的菜单,比如拍照的Intent有“照相机”和“美图秀秀”,这里也暂时略。
好接下来讲一下实现方式
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/share_item" android:title="@string/share" /> <item android:id="@+id/pdf_item" android:title="翻页" /> </menu>
其中title是菜单的文字,还能设置菜单的图片,使用android:icon来设置 菜单也是支持子菜单嵌套的,item的Content里面可以设置menu作为子菜单
PopupMenu popupMenu = new PopupMenu(requireContext(),view.findViewById(R.id.popupButton)); popupMenu.getMenuInflater().inflate(R.menu.file_popup, popupMenu.getMenu()); popupMenu.show();
其中构造函数的第二个参数是菜单“锚定控件”,一般空间够就在下方展开。 一般常用的使用inflate函数来展开菜单资源的,也可以使用popupMenu.getMenu().add纯代码的方式添加。
从需求角度上讲,菜单有“动态性”设置,根据不同的数据有个菜单项目是有条件的显示/隐藏。
popupMenu.getMenu().getItem(0).setVisible(true); boolean showPdfItem = this.viewModel.isPdf(); popupMenu.getMenu().getItem(1).setVisible(showPdfItem); if(showPdfItem){ popupMenu.getMenu().getItem(1).setTitle(this.viewModel.getPdfItemTitle()); }
这里需要“动态”控制菜单的Title和显示
popupMenu.setOnMenuItemClickListener(item -> { switch (item.getItemId()){ case R.id.share_item: NavDirections action = ViewerFragmentDirections.actionViewerFragmentToShareFragment( id ); this.navController.navigate(action); break; case R.id.pdf_item: this.viewModel.switchPdfViewMode(); break; } return true; });
通过setOnMenuItemClickListener可以监听菜单的点击。 这里因为没办法使用binding了,所以只能用比较“原始”的switch case的方式来写代码
菜单资源
添加菜单
The text was updated successfully, but these errors were encountered:
No branches or pull requests
安卓中的菜单
菜单也是资源(Resource)的一种。通过ide可以查看相关资源
常用的菜单有下面几种
这种菜单的位置在ActionBar上面
弹出式菜单
这就是本篇介绍重点。
菜单组
菜单也是可以分组的,菜单也可以在组内设置单选项和多选项的。这里暂时略
基于 Intent 的菜单项
和Intent关联的菜单,比如拍照的Intent有“照相机”和“美图秀秀”,这里也暂时略。
弹出式菜单(PopupMenu)代码实现
好接下来讲一下实现方式
如果是什么菜单类型,我们都需要创建“菜单”资源,这是一个xml,根结点是
其中title是菜单的文字,还能设置菜单的图片,使用android:icon来设置
菜单也是支持子菜单嵌套的,item的Content里面可以设置menu作为子菜单
其中构造函数的第二个参数是菜单“锚定控件”,一般空间够就在下方展开。
一般常用的使用inflate函数来展开菜单资源的,也可以使用popupMenu.getMenu().add纯代码的方式添加。
对于弹出式菜单的控制主要有两方面。
从需求角度上讲,菜单有“动态性”设置,根据不同的数据有个菜单项目是有条件的显示/隐藏。
这里需要“动态”控制菜单的Title和显示
通过setOnMenuItemClickListener可以监听菜单的点击。
这里因为没办法使用binding了,所以只能用比较“原始”的switch case的方式来写代码
参考链接
菜单资源
添加菜单
The text was updated successfully, but these errors were encountered: