以编程方式更改ActionBar图标

Luc*_*uca 5 android android-menu android-actionbar

我将从片段返回到我的主要活动,并且为了某些逻辑,我必须更改操作栏菜单上的图标的外观.

这是操作栏上的菜单:

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="it.gn.sfa.Main">


    <item
        android:id="@+id/action_search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_action_search"
        android:showAsAction="collapseActionView|ifRoom"
        android:title="Search" />
    <item
        android:id="@+id/action_filter"
        android:icon="@drawable/ic_action_filter_empty"
        android:showAsAction="ifRoom"
        android:title="Filter" />
    <item
        android:id="@+id/action_new"
        android:icon="@drawable/ic_action_new"
        android:showAsAction="ifRoom"
        android:title="New" />

</menu>
Run Code Online (Sandbox Code Playgroud)

我必须更改sencond项(id = action_filter).我尝试了不同的解决方案,在不同的帖子中找到.评分最高的是

mOptionsMenu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_action_filter));
Run Code Online (Sandbox Code Playgroud)

但似乎不起作用.

在另一边getActionBar().setIcon(getResources().getDrawable(R.drawable.ic_action_filter));改变徽标,我不想这样.

如何才能更改菜单​​上的第二项?

Spu*_*dow 18

试试这个

mOptionsMenu.findItem(R.id.action_filter).setIcon(R.drawable.ic_action_filter);
Run Code Online (Sandbox Code Playgroud)

假设你拥有这一切成立的mOptionsMenu

private Menu mOptionsMenu;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    // inflating your menu here
    mOptionsMenu = menu;
    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 :)