2

我不是想改变主 Icon ,只是一个菜单项的图标。

该图标本质上是显示我当时是否正在录制。我在使用时更改图标

item.setIcon(R.drawable.recordstart);

在这个方法中。

public boolean onOptionsItemSelected(MenuItem item) {
    ...
    } else if (item.getItemId() == R.id.ab_menu_VRecord) {

        if(recording)
                    {
                       item.setIcon(R.drawable.recordstop);
                    }else{
                       item.setIcon(R.drawable.recordstart);
                    }

        }

        return true;
    } else {
        return super.onOptionsItemSelected(item);
    }
}

任何人都知道我如何在这种方法之外做到这一点。

4

3 回答 3

5

例子:

class {

    public MenuItem example;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.actionbar, menu);       
        example = menu.findItem(R.id.ab_menu_exampleview);
        return true;
    }
}

然后在你的课堂上你可以使用

example.setIcon("Your Image");
于 2012-08-06T16:34:13.583 回答
0

不是 100% 确定要更改图标的位置,但您当然可以缓存或创建一个类成员变量,并将其指向 Activity 或 Fragment 中的 MenuItem。在他们单击它或将其膨胀后,将其分配给成员变量,当您需要更改它时,您有一个引用或“缓存”指针指向它以更改图标。

我认为这是 UI 更改,因此您可能必须确保仅在 UI 线程上调用它。

于 2012-08-06T16:16:37.717 回答
0
if(!item.isChecked()){
    item.setChecked(true);
    item.setIcon(R.drawable.icon1);
}else{
    item.setChecked(false);
    item.setIcon(R.drawable.icon2);
}

这是?

于 2014-02-20T04:55:54.000 回答