简体   繁体   English

如何为弹出菜单项插入图标

[英]How to insert icon for the pop up menu items

I am using popup menu inflater to view menu items, But i am not getting icons in the menu list..here is my code please help me.. 我正在使用弹出式菜单充气机查看菜单项,但菜单列表中没有图标。这是我的代码,请帮助我。

<item android:id="@+id/menu_messages" android:title="Messages"  android:icon="@drawable/mail"    />
<item android:id="@+id/menu_settings" android:title="Settings" android:icon="@drawable/setting" />
<item android:id="@+id/menu_logout" android:title="Logout" android:icon="@drawable/lock1" />

final ImageView iv = (ImageView) findViewById(R.id.imageView2); 最终的ImageView iv =(ImageView)findViewById(R.id.imageView2); /** * Step 1: Create a new instance of popup menu */ final PopupMenu popupMenu = new PopupMenu(this, iv); / ** *步骤1:创建弹出菜单的新实例* / final PopupMenu popupMenu = new PopupMenu(this,iv);

 /**
  * Step 2: Inflate the menu resource. Here the menu resource is
  * defined in the res/menu project folder
  */
// popupMenu.inflate(R.layout.listview_menu);
 popupMenu.inflate(R.menu.example);
 /**
  * Step 3: Call show() method on the popup menu to display the
  * menu when the button is clicked.
  */
 iv.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {

         popupMenu.show();
     }
 });


 /**
  *  Handle menu item clicks
  */
 popupMenu.setOnMenuItemClickListener(
         new PopupMenu.OnMenuItemClickListener() {
     @Override
     public boolean onMenuItemClick(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.menu_messages:
                 startActivity(new Intent(WelcomeScreen.this,Contact.class));
                 break;
             case R.id.menu_settings:
                 startActivity(new Intent(WelcomeScreen.this,Settings.class));
                 break;
             case R.id.menu_logout:
                 startActivity(new Intent(WelcomeScreen.this,Login.class));
                 break;
         }
         return true;
     }
 });
If you are using popup menu just copy the below code and run it, you will get icons in popupmenu

PopupMenu popup = new PopupMenu(getApplicationContext(), view);

try {
    Field[] fields = popup.getClass().getDeclaredFields();
    for (Field field : fields) {
        if ("mPopup".equals(field.getName())) {
            field.setAccessible(true);
            Object menuPopupHelper = field.get(popup);
            Class<?> classPopupHelper = Class.forName(menuPopupHelper
                    .getClass().getName());
            Method setForceIcons = classPopupHelper.getMethod(
                    "setForceShowIcon", boolean.class);
            setForceIcons.invoke(menuPopupHelper, true);
            break;
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

    popup.getMenuInflater()
                    .inflate(R.menu.publisher, popup.getMenu());

                    //registering popup with OnMenuItemClickListener
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        public boolean onMenuItemClick(MenuItem item) {

                            switch (item.getItemId()) {
                            case R.id.menu:
                                //your function
                                return true;
                                                        default:
                                break;
                            }
                            return false;
                        }
                    });
                    popup.show();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM