介绍
本篇文章给大家分享的是有关如何在Android中使用PopupMenu组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> 1。创建资源文件强>
在res目录下新建菜单文件夹,这个文件夹主要是来存放菜单资源文件的。我们新建sample_menu。xml文件:
& lt; ? xml version=?.0“,编码=皍tf-8" ?比; & lt; menu  xmlns: android=癶ttp://schemas.android.com/apk/res/android"比; & lt;项目 android:才能id=癅 + id/next" android:才能图标=癅mipmap/ic_launcher" android: title=安拍芟乱皇撞シ拧?比; & lt;项目 android:才能id=癅 + id/add" android:才能图标=癅mipmap/ic_launcher" android: title=安拍芴砑拥礁璧ァ?比; & lt;项目 android:才能id=癅 + id/detail" android:才能图标=癅mipmap/ic_launcher" android:才能title=案枨昵椤?比; & lt;项目 android:才能id=癅 + id/del" android:才能图标=癅mipmap/ic_launcher" android: title=安拍苌境枨?比; & lt;/menu>
随便写几个菜单选项。
<强> 2。在代码中展示强>
private void showPopupMenu (View 视图),{//才能,这里的视图代表popupMenu需要依附的观点 PopupMenu 才能;PopupMenu =, new PopupMenu (MainActivity.this,视图);//,才能获取布局文件 popupMenu.getMenuInflater才能().inflate (R.menu.sample_menu, popupMenu.getMenu ()); popupMenu.show才能();//才能,通过上面这几行代码,就可以把控件显示出来了 popupMenu.setOnMenuItemClickListener才能(new PopupMenu.OnMenuItemClickListener (), { @Override。才能 ,,public boolean  onMenuItemClick (MenuItem 项目),{ ,,,//,控件每一个条目的点击事件 ,,,return 真实; ,,} ,,}); popupMenu.setOnDismissListener才能(new PopupMenu.OnDismissListener (), { @Override。才能 ,,public void  onDismiss (PopupMenu 菜单),{ ,,,//,控件消失时的事件 ,,} ,,}); 以前,}>有时候我们还需要根据不同的条件,显示或隐藏指定的项目,比如在点击第二个按钮的时候隐藏掉“删除歌曲”的选项,只需要添加几行代码:
… popupMenu.show (); switch (view.getId ()), { ,case R.id.btn_world: popupMenu.getMenu才能().findItem (R.id.del) .setVisible(假); 打破才能; ,默认值: 打破才能; } …有时候我们还需要根据不同的条件,显示或隐藏指定的项目,比如在点击第二个按钮的时候隐藏掉“删除歌曲”的选项,只需要添加几行代码:
… popupMenu.show (); switch (view.getId ()), { ,case R.id.btn_world: popupMenu.getMenu才能().findItem (R.id.del) .setVisible(假); 打破才能; ,默认值: 打破才能; } …来看一下效果:
PopupMenu默认是在指定控件的下方显示的,但是当检测到空间不足时,会自动调整显示的位置,而且自带动画效果,是不是很方便呢?
<强> 3。在PopupMenu中显示图标强>
以前用到带图标的菜单时,一般都是通过自定义PopupWindow来实现的,比较麻烦,其实PopupMenu可以很简单的实现这个功能,不过需要用到反射。关于反射,我理解的不深,所以下面的代码也是从网上粘贴过来的。细心的同学可能会发现,在xml资源文件中,我在每个项标签里都写了图标的属性。没错,要显示的正是在这里设置的图片。当然,如果你不需要显示图标的话,图标是没有必要写的。
try { ,,Field Field =, popupMenu.getClass () .getDeclaredField (“mPopup"); ,,field.setAccessible(真正的); ,,MenuPopupHelper helper =, (MenuPopupHelper), field.get (popupMenu); ,,helper.setForceShowIcon(真正的); ,,},catch (NoSuchFieldException e), { ,,e.printStackTrace (); ,,},catch (IllegalAccessException e), { ,,e.printStackTrace (); 以前,,}>以上就是如何在Android中使用PopupMenu组件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
如何在Android中使用PopupMenu组件