Mar*_*HUN 2 java xml icons android android-actionbar
在我的ActionBar上有一个项目有一个关于星形的图标(没有填充).当用户点击它时,图标会变为另一个图标(填充星形).但问题是,如果用户再次进行陈列,则图标不会再次改变.
所以,这就是我想要的
icon1->点进> icon2->点进> icon1->点进> ICON2
我的项目xml:
<item
android:id="@+id/bookmark"
android:icon="@drawable/bookmark"
android:showAsAction="ifRoom"
android:title="Add to Favorites"/>
Run Code Online (Sandbox Code Playgroud)
我的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;
}
Run Code Online (Sandbox Code Playgroud)
在你的item.xml
make it checkable:
<item
android:id="@+id/bookmark"
android:icon="@drawable/nobookmark"
android:checkable="true"
android:showAsAction="ifRoom"
android:title="Add to Favorites"/>
Run Code Online (Sandbox Code Playgroud)
在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;
}
Run Code Online (Sandbox Code Playgroud)