Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何替换/更改操作栏项目的图标_Android_Replace_Icons_Action - Fatal编程技术网

Android 如何替换/更改操作栏项目的图标

Android 如何替换/更改操作栏项目的图标,android,replace,icons,action,Android,Replace,Icons,Action,我希望你能帮我一把 我有一个设置了默认图标的操作栏项目。(android:icon=“@drawable/ic\u Action\u volume\u on”) 但问题是,我需要在我的方法“OnOptions ItemSelected”中以编程方式对其进行更改,因为我最近开始使用Android,所以我有点迷路了…首先,您必须在onCreateOptions菜单上保存一个菜单实例: private Menu menu; @Override public boolean onCreateOptio

我希望你能帮我一把

我有一个设置了默认图标的操作栏项目。(android:icon=“@drawable/ic\u Action\u volume\u on”)
但问题是,我需要在我的方法“OnOptions ItemSelected”中以编程方式对其进行更改,因为我最近开始使用Android,所以我有点迷路了…

首先,您必须在
onCreateOptions菜单上保存一个菜单实例:

private Menu menu;

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
    this.menu = menu
    ...
}
然后,您可以创建以下方法:

private void setItemView(int itemId, int layoutId) {
    if (menu != null) {
        final Menuitem myItem = menu.findItem(itemId);
        if (myItem != null) {
            MenuItemCompat.setActionView(myItem, layoutId);
        }
    }
}
它将用视图替换项目的当前图标。例如,如果要显示一个
ProgressBar
,可以创建此布局(将其命名为
item\u custom\u view.xml
):



最后,在
活动中
,只需调用
setItemView
方法。在参数中输入项目id和布局id(在本例中为
R.layout.item\u custom\u view
)。

只需定义

private Menu menu;
在onCreateOptionMenu回调函数中,为菜单赋值,并获得如下菜单充气器

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    this.menu=menu;
    getMenuInflater().inflate(R.menu.menu_bar, menu);
    return true;
}
最后,您可以写这行代码来更改您首选方法中的图标

menu.findItem(R.id.item_id).setIcon(R.drawable.your_icon);

是的,这给了我一个解决办法,非常感谢,最后我用:final MenuItem myItem=menu.findItem(R.id.stop\u music);myItem.setIcon(R.drawable.ic\u action\u volume\u mute);
menu.findItem(R.id.item_id).setIcon(R.drawable.your_icon);