java - Android ActionBar - 项目图标不断变化?

标签 java android xml android-actionbar icons

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

这就是我想要的

icon1->click->icon2->click->icon1->click->icon2

我的项目 xml:

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

我的 actionBar Java:

@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;

  }

最佳答案

在您的 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;
}

关于java - Android ActionBar - 项目图标不断变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23887667/

相关文章:

java - 当 listView 为空时,setEmptyView 不显示图像

java - 如何在 StAX 中跟踪大文件的解析进度?

java - JPanel Image仅在paintComponent循环结束后更新

java - 是否可以标记 springboot 测试,以便它们仅在某些配置文件处于 Activity 状态时运行

android - 如何在 Jitpack 上使用 maven 为 Kotlin 库发布 KDoc?

android - 如何使用delphi XE5通过蓝牙发送字符串或字符?

javascript - 不使用 AJAX 加载 XML 文件

java - 删除数字列表末尾的逗号

java - JFrame 显示不正确

返回 bool 值的 Android alertdialog 生成器