从Android菜单项图标中获取绘图

时间:2014-03-28 06:49:18

标签: android android-drawable android-menu

我在菜单项中有一个书签图标。我想更改图标中的drawable,具体取决于之前是否按过书签。

我有两个标签,staro(意思是星橙)或starw(意思是星白)。我只是想在媒体上切换这个。

我如何知道public boolean onOptionsItemSelected(MenuItem item)方法中图标中的哪个绘图。是否可以通过该项目了解drawable。我所知道的是item.getIcon()不是drawble。我无法将item.getIcon()R.drawable.starto

进行比较

3 个答案:

答案 0 :(得分:12)

你可以尝试

if (item.getIcon().getConstantState().equals(
        getResources().getDrawable(R.drawable.starto).getConstantState()
)) {
    ...
}

如上所述here

答案 1 :(得分:1)

您可以在onPrepareOptionsMenu()中进行更改,每次在显示菜单之前调用该更改。它适合基于某些动态数据显示/隐藏选项。

如果您现在已经满足要求,可以直接致电

if (condition_for_orange) {
  menu.findItem(resourceId).setIcon(R.drawable.staro);
} else {
  menu.findItem(resourceId).setIcon(R.drawable.startw);
}

您可以使用共享首选项或其他可以存储状态的全局变量,这些变量可以帮助您决定现在显示哪个图标。

答案 2 :(得分:0)

你也可以比较这些。

您可以通过

找到可绘制的ID
int identifier = getResources().getIdentifier("pic1", "drawable","android.demo");

然后你可以将它与R.drawable.starto`进行比较。