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