studio para menus ejemplos desplegable contextual context bar android menu android-optionsmenu

para - Cómo agregar el botón de alternar en el elemento del menú en Android



menus en android ejemplos (3)

public boolean onPrepareOptionsMenu(final Menu menu) { if(super.mMapView.isTraffic()) menu.findItem(MENU_TRAFFIC_ID).setIcon(R.drawable.traffic_off_48); else menu.findItem(MENU_TRAFFIC_ID).setIcon(R.drawable.traffic_on_48); return super.onPrepareOptionsMenu(menu); }

Tengo un elemento del menú de opciones en mi aplicación. El requisito era agregar un botón de alternar a un elemento del menú. es posible?


¿Quiere decir que desea agregar un botón de alternar como uno de los elementos / elementos que aparecen en el menú de opciones o agregar un botón a un elemento de la lista del menú?

Luego puede hacerlo con un diseño personalizado (use un ListView dentro si lo desea) y lo infla en el

public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true; }

y puede guardar los valores cada vez que se alterna el botón.

public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.btnToggleValue: // save it here return true; case R.id.btnSecond: ... return true; default: return super.onOptionsItemSelected(item); } }


Necesita configurar android:checkable propiedad android:checkable del menú es true y controlar su estado verificado en tiempo de ejecución. Ejemplo:

Menú :

<item android:id="@+id/checkable_menu" android:checkable="true" android:title="@string/checkable" />

Actividad :

private boolean isChecked = false; @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem checkable = menu.findItem(R.id.checkable_menu); checkable.setChecked(isChecked); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.checkable_menu: isChecked = !item.isChecked(); item.setChecked(isChecked); return true; default: return false; } }

Espero que esto ayude.