Displaying icon for menu items of Action Bar in Honeycomb android 3.0

后端 未结 3 1312
余生分开走
余生分开走 2020-12-01 20:09

hi
I am developing an android application using Honeycomb android 3.0 . I am tryig to display a menu in Action Bar . The menu has an icon and tiltle. When we click the

相关标签:
3条回答
  • 2020-12-01 20:37

    Actually, there is a way to put icons next to the texts for the menu items:

    final MenuItem menuItem=...
    final ImageSpan imageSpan=new ImageSpan(this,R.drawable.ic_stat_app_icon);
    final CharSequence title=" "+menuItem.getTitle();
    final SpannableString spannableString=new SpannableString(title);
    spannableString.setSpan(imageSpan,0,1,0);
    menuItem.setTitle(spannableString);
    

    This will put an icon at the beginning of the menu item, right before its original text.

    BTW, this will also work on PopupMenu.

    0 讨论(0)
  • 2020-12-01 20:42

    Though the original question is a bit old and moreover, because reasoning against showing icons in the menu is somewhat lacking substance (see Steven Elliott's excellent remark Displaying icon for menu items of Action Bar in Honeycomb android 3.0), I'd like to point to a great, working solution that was given here:

    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
        if(featureId == Window.FEATURE_ACTION_BAR && menu != null) {
            if(menu.getClass().getSimpleName().equals("MenuBuilder")) {
                try {
                    Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);
                } catch(NoSuchMethodException e) { //...
                } catch(Exception e) { // ...
                }
            }
        }
        return super.onMenuOpened(featureId, menu);
    }
    

    Simply add this code to your activity and import the appropriate modules. Again, not my work, but working none the less.

    0 讨论(0)
  • 2020-12-01 20:44

    The behavior where icons are not displayed in the action bar's overflow menu is by design (as of this writing). If you absolutely need to use icons, you'll need to write a custom implementation consider rethinking your design to fit the UI conventions.

    0 讨论(0)
提交回复
热议问题