如何在android中添加Menuitem Icon

时间:2015-02-10 11:59:23

标签: java android

这就是我在android中创建menuitem的方式......

MenuItem archiveItem = menu.add(Menu.CATEGORY_SYSTEM, 0, 102, R.string.archive_events);
        archiveItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        archiveItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intent = new Intent(MainActivity.this, PastEventsActivity.class);
                startActivity(intent);
                return false;
            }
        });

我尝试通过添加以下代码行添加图标:

archiveItem.setIcon(getResources().getDrawable(R.drawable.ic_action_locate));

为什么指定的图标不会显示为相应文本旁边的menuitem图标。有人可以帮忙吗感谢

2 个答案:

答案 0 :(得分:0)

尝试在更新菜单项invalidateOptionsMenu()后调用此方法。如果您使用的是appcompat,请拨打supportInvalidateOptionsMenu()

它应该可以解决你的问题。

答案 1 :(得分:0)

在您的代码中尝试将MenuItem.SHOW_AS_ACTION_NEVER更改为MenuItem.SHOW_AS_ACTION_ALWAYS并尝试将其详细了解详情,请参阅link

这就是我的方式。使用此代码在此方向文件夹 res - >下创建my_menutitem.xml文件菜单

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
    android:id="@+id/action_date"      
    android:icon="@drawable/calender" //set ur icon here
    android:orderInCategory="9999"
    android:showAsAction="ifRoom" // change to always if u want to show always
    android:title="@string/CAL_title"/>

</menu>

在您的活动类中使用此覆盖方法

  @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.my_menutitem, menu);
    return true;
}



@Override 
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_date:
        //do your code as u like
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}