tipos studio opciones inflar example context bar android android-menu android-checkbox

studio - Elemento de menú comprobable de Android



menu overflow android studio (5)

Ajustar el item s en un elemento de group , como este:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="all"> <item android:id="@+id/item1" android:titleCondensed="Options" android:title="Highlight Options" android:icon="@android:drawable/ic_menu_preferences"> </item> <item android:id="@+id/item2" android:titleCondensed="Persist" android:title="Persist" android:icon="@android:drawable/ic_menu_preferences" android:checkable="true"> </item> </group> </menu>

De los documentos de Android :

El atributo android: checkableBehavior acepta:

único: solo se puede marcar un elemento del grupo (botones de opción)

todos - Todos los artículos se pueden marcar (casillas de verificación)

ninguno - No hay elementos son seleccionables

Tengo el siguiente diseño de menú en mi aplicación de Android:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/item1" android:titleCondensed="Options" android:title="Highlight Options" android:icon="@android:drawable/ic_menu_preferences" /> <item android:id="@+id/item2" android:titleCondensed="Persist" android:title="Persist" android:icon="@android:drawable/ic_menu_preferences" android:checkable="true" /> </menu>

Mi problema es que el segundo elemento del menú no parece "verificable" cuando ejecuto mi aplicación en el emulador de Android. Debería haber un tic verde sobre el artículo, ¿verdad? Para indicar que es seleccionable

¿Estoy haciendo algo mal?


El diseño se ve bien. Pero debe marcar y desmarcar el elemento del menú en el código.

De la documentation :

Cuando se selecciona un elemento seleccionable, el sistema llama al método de devolución de llamada seleccionado por elemento (como onOptionsItemSelected() ). Aquí debe establecer el estado de la casilla de verificación, ya que una casilla de verificación o un botón de opción no cambia su estado automáticamente. Puede consultar el estado actual del artículo (como lo era antes de que el usuario lo haya seleccionado) con isChecked() y luego establecer el estado verificado con setChecked() .


Esto puede depender del tema pero mi menú no mostró una casilla de verificación. Encontré this :

Nota: Los elementos de menú en el menú de iconos no pueden mostrar una casilla de verificación o un botón de opción. Si eliges hacer que los elementos en el menú del icono sean seleccionables, entonces debes indicar el estado personalmente al cambiar el ícono y / o el texto cada vez que el estado cambie entre encendido y apagado.


Para agregar elementos de menú mediante programación,

@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("Item1").setActionView(R.layout.action_layout_checkbox).setCheckable(true); return super.onCreateOptionsMenu(menu); }

res / layout /action_layout_checkbox.xml

<CheckBox xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" />


Puede crear un elemento de menú seleccionable configurando actionViewClass en un widget comprobable como android.widget.CheckBox

res / menu / menu_with_checkable_menu_item.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_favorite" android:checkable="true" android:title="@string/action_favorite" app:actionViewClass="android.widget.CheckBox" app:showAsAction="ifRoom|withText" /> </menu>

Y puede incluso actionLayout para que sea una estrella comprobable si establece actionLayout en un diseño con un estilo android.widget.CheckBox

res / layout / action_layout_styled_checkbox.xml

<CheckBox xmlns:android="http://schemas.android.com/apk/res/android" style="?android:attr/starStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" />

res / menu / menu_with_checkable_star_menu_item.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_favorites" android:checkable="true" android:title="@string/action_favorites" app:actionLayout="@layout/action_layout_styled_checkbox" app:showAsAction="ifRoom|withText" /> </menu>

Para establecer el valor

menuItem.setChecked(true/false);

Para obtener el valor

menuItem.isChecked()

Echar MenuItem a CheckBox

CheckBox checkBox= (CheckBox) menuItem.getActionView();