tengo Menultem define de esta manera:MenuItem de comprobar el estado no se muestra correctamente por su icono
<?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>
y btn_star.xml
define 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 estado comprobado, incluso si la propiedad MenuItem
de isChecked()
es verdadera.
Estoy usando el control ActionBarSherlock, sin embargo, estoy obteniendo el mismo resultado si simplemente creo un menú de opciones normal y llamo al setChecked(true)
. Todavía muestra el btn_star_off
dibujable independientemente del estado verificado del elemento.
El método onOptionsItemSelected()
se está llamando correctamente y que puede cambiar con éxito la propiedad verificado:
@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 la propiedad isChecked ser cambiado, pero el icono de sí mismo no se actualiza para reflejar la correcta estado.
¿Hay algo que me falta aquí? ¿Estoy haciendo esto incorrectamente? No puedo entender por qué esto no estaría funcionando correctamente.
me encontré con el mismo, el state_checked no funciona para los iconos del menú por alguna razón – gregm