我可以更改操纵栏项目上的图标

时间:2012-08-06 16:14:24

标签: android android-actionbar

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

图标基本上显示我当时是否正在录制。我在使用

点击时更改图标
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);
    }
}

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

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

if(!item.isChecked()){
    item.setChecked(true);
    item.setIcon(R.drawable.icon1);
}else{
    item.setChecked(false);
    item.setIcon(R.drawable.icon2);
}

是这个吗?