Android ActionBar - 项目图标连续变化?

时间:2014-05-27 10:59:41

标签: java android xml android-actionbar icons

在我的ActionBar上有一个项目有一个关于星形的图标(没有填充)。 当用户点击它时,图标会变为另一个图标(填充星形)。 但问题是,如果用户再次进行陈列,则图标不会再次改变。

所以,这就是我想要的

icon1->点进> icon2->点进> icon1->点进> ICON2

我的项目xml:

<item
    android:id="@+id/bookmark"
    android:icon="@drawable/bookmark"
    android:showAsAction="ifRoom"
    android:title="Add to Favorites"/>

My Java for actionBar:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
    inflater.inflate(R.menu.activity_desc, menu);
}



@Override
  public boolean onOptionsItemSelected(MenuItem item) {

    if(item.getItemId() == R.id.bookmark){



        // i tried this: something like: if(item.getIcon() == (R.drawable.nobookmark){} it doesn't work 


        item.setIcon(R.drawable.nobookmark);

        return true;
    }

    return true;

  }

1 个答案:

答案 0 :(得分:6)

item.xml中,将其设为可检查:

<item
    android:id="@+id/bookmark"
    android:icon="@drawable/nobookmark"
    android:checkable="true"
    android:showAsAction="ifRoom"
    android:title="Add to Favorites"/>

在java中,您必须手动切换选中状态并选择图标:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  if(item.getItemId() == R.id.bookmark){
    item.setChecked(!item.isChecked());
    item.setIcon(item.isChecked() ? R.drawable.bookmark : R.drawable.nobookmark);
    return true;
  }
  return false;
}