Displaying icon for menu items of Action Bar in Honeycomb android 3.0
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 menu item it displays its items in the form of a dropdown list .It was the items in drop down list with item names but with out icon it is displaying . I want an icon to be displayed beside the title in drop down list which appears when I click the menu. can anyone help me in sorting out this issue. my xml file is as below: <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/addserver"
android:icon="@android:drawable/ic_menu_add"
android:title="Add Server"
android:showAsAction="ifRoom|withText"
>
<menu>
<item android:id="@+id/fileserver"
android:icon="@android:drawable/ic_menu_add"
android:title="File Server"
android:onClick="onCreate"
android:showAsAction="always"/>
<item android:id="@+id/sharepoint"
android:icon="@android:drawable/ic_menu_add"
android:title="Share Point"
android:onClick="onCreate" />
</menu>
</item>
Initially it displays add server with icon on left. cl开发者_Go百科icking on that will display fileserver ,sharepoint as dropdown list with out icon though I given android:icon statement.
Can anyone help me in sorting out this issue? Thanks in Advance,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.
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.
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.
精彩评论