【问题标题】:Android ActionBar - Item icon change continuously?Android ActionBar - 项目图标不断变化?
【发布时间】:2014-05-27 10:59:40
【问题描述】:

在我的 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;

  }

【问题讨论】:

  • 无论您是否使用 ActionBarSherlock,这都是正确的。
  • 请在代码示例中详细说明
  • 但我不想使用 externam 库,我知道它可以做到,只是我不知道对数和逻辑,所以请帮忙
  • 如果您可以根据您的答案在一个单独的框中更改我的代码(这样我就可以接受您的答案),那么我会非常高兴地接受您的答案,我会为您的答案打上绿色复选标记,拜托了

标签: java android xml android-actionbar icons


【解决方案1】:

在您的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 或我的操作栏 xml 文件中?请更新你的答案,我会接受你的答案。
  • 但现在它只显示来自 android:state_checked="true" 的可绘制图标,如果我点击操作栏上的图标,它不会改变。
  • android:state_checked="false" 不起作用我应该更改或删除我的 java 文件中的任何内容吗?
  • 如果我点击图标,没有任何反应,
  • adn 我应该在哪里写这个 setChecked 代码?请将此代码放入我在问题中编写的代码中,然后我会接受您的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多