我以这种方式定义了 MenuItem:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_starred"
android:icon="@drawable/btn_star"
android:title="@string/description_star"
android:checkable="true"
android:checked="true"
android:orderInCategory="1"
android:showAsAction="always" />
</menu>
并btn_star.xml
以这种方式定义:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="false"
android:drawable="@drawable/btn_star_off_normal" />
<item
android:state_checked="true"
android:drawable="@drawable/btn_star_on_normal" />
</selector>
但是,当我使用它创建选项菜单时,即使MenuItem
'isChecked()
属性为 true,图标也不会显示为选中状态。
我正在使用ActionBarSherlock控件,但是,如果我只是创建一个普通的选项菜单并调用setChecked(true)
. btn_star_off
无论项目的选中状态如何,它仍会显示可绘制对象。
该onOptionsItemSelected()
方法被正确调用,我可以成功更改选中的属性:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.isCheckable()) {
item.setChecked(!item.isChecked());
}
return super.onOptionsItemSelected(item);
}
在此处设置断点显示 isChecked 属性正在更改,但图标本身并未更新以反映正确的状态。
我在这里缺少什么吗?我做错了吗?我不知道为什么这不能正常工作。