如何在Android中使用PopupMenu组件

  介绍

本篇文章给大家分享的是有关如何在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(假);   打破才能;   ,默认值:   打破才能;   }   …

来看一下效果:

如何在Android中使用PopupMenu组件“> <br/> </p> <p> <img src=

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组件