l estado marcado de @ MenuItem no se muestra correctamente por su icono
Tengo MenuItem definido de esta manera:
<?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>
ybtn_star.xml
definido de esta manera:
<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>
Cuando creo un menú de opciones usando esto, sin embargo, el icono nunca se muestra en su estado marcado, incluso si laMenuItem
'sisChecked()
la propiedad es verdadera.
Estoy usando la ActionBarSherlock control, sin embargo, obtengo el mismo resultado si simplemente creo un menú de opciones normal y llamo asetChecked(true)
. Todavía muestra labtn_star_off
dibujable independientemente del estado marcado del elemento.
LosonOptionsItemSelected()
l método @ se llama correctamente y puedo cambiar con éxito la propiedad marcada:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.isCheckable()) {
item.setChecked(!item.isChecked());
}
return super.onOptionsItemSelected(item);
}
Establecer un punto de interrupción aquí muestra que la propiedad isChecked se está modificando, pero el icono en sí no se actualiza para reflejar el estado correcto.
¿Hay algo que me falta aquí? ¿Estoy haciendo esto incorrectamente? No puedo entender por qué esto no funcionaría correctamente.