¿Es posible implementar el botón de alternar en el elemento de menú de acción mediante Actionbar sherlock en android

Tengo una aplicación, que tienen botón de conmutación en el elemento de menú de acción, aunque estoy usando barra de acción Sherlock, no sé, cómo colocar el botón de alternar en el elemento de menú de acción. No quiero colocarlo como un diseño personalizado en la barra de acción, pero quiero colocarlo como un elemento de menú. Si alguien encuentra la solución, por favor, ayúdame.

Propósito, si cambio el estado del botón de la palanca, clasificará a la persona basada en ALFABETAS y otra vez en fecha de nacimiento.

¡Gracias por adelantado!

Sólo tienes que añadir como un botón de menú normal, comprobar su estado con una variable booleana, y puede cambiar el icono y el título al cambiar el sortmode

 boolean birthSort=false; @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_toggle: if(birthSort){ //change your view and sort it by Alphabet item.setIcon(icon1) item.setTitle(title1) birthSort=false; }else{ //change your view and sort it by Date of Birth item.setIcon(icon2) item.setTitle(title2) birthSort=true; } return true; } return super.onOptionsItemSelected(item); } 

No olvide añadirlo en xml como cualquier otro botón de menú y configurar android:showAsAction si desea mostrarlo en desbordamiento o fuera de él.

 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_toogle" android:showAsAction="ifRoom" android:title="Share" /> </menu> 

Otro enfoque sería utilizar un diseño personalizado para tu ActionBar:

Básicamente, se define un diseño que contiene su Toggle:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ToggleButton android:id="@+id/actionbar_service_toggle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="Logging On" android:textOff="Logging Off" /> </RelativeLayout> 

ALTERNATIVA 1: Luego en su contenedor de actividad o fragmento usted hace:

 ActionBar actionBar = getSupportActionBar(); actionBar.setCustomView(R.layout.actionbar_top); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM); ... ToggleButton button = (ToggleButton) findViewById(R.id.actionbar_service_toggle); 

Tenga en cuenta que tiene un ToggleButton real y lo está manejando en el código como un objeto real ToggleButton, que tiene muchas ventajas en comparación con tener que volver a implementar su propio toggle (tema, fiabilidad, jerarquía de vistas, soporte nativo …) .

Código fuente aquí .


ALTERNATIVA 2: Otra forma de hacerlo es incrustar su vista personalizada en una vista de menú normal:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/myswitch" android:title="" android:showAsAction="always" android:actionLayout="@layout/actionbar_service_toggle" /> </menu> 

Si como yo la acciónLayout no funciona, pruebe la app:actionLayout="@layout/actionbar_service_toggle" lugar de android:actionLayout="@layout/actionbar_service_toggle" así como app:showAsAction="always" lugar de android:showAsAction="always" Esto se debe a que si utiliza appCompat, no se utilizará el espacio de nombres android.

Así que aquí está la versión final:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ToggleButton android:id="@+id/actionbar_service_toggle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="Logging On" android:textOff="Logging Off" /> </RelativeLayout> 

y

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/myswitch" android:title="" app:showAsAction="always" app:actionLayout="@layout/actionbar_service_toggle" /> </menu> 

Crear archivo xml en el menú:

Menu.xml

  <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="si.ziga.switchinsideab.MainActivity"> <item android:id="@+id/switchId" android:title="" android:showasaction="always" android:actionlayout="@layout/switch_layout"> <item android:id="@+id/action_settings" android:orderincategory="100" android:title="@string/action_settings" app:showasaction="never"> </item></item></menu> 

Y luego navegar a su carpeta de diseño hacer un nuevo archivo xml y el nombre de switch_layout.xml Aquí está el código: switch_layout.xml

 <!--?xml version="1.0" encoding="utf-8"?--> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="horizontal"> <switch android:id="@+id/switchAB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_centervertical="true"> </switch></relativelayout> 

En la clase MainActivity, copie y pegue este código:
MainActivity.java

  @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); switchAB = (Switch)menu.findItem(R.id.switchId) .getActionView().findViewById(R.id.switchAB);7 

O sigue este enlace sobre estas cosas

  • Diferenciar el menú normal KeyEvent desde la apertura de IME
  • Cómo ajustar contenido de texto en ActionBarSherlock spinner de navegación
  • ActionbarSherlock abrir submenú en el menú del dispositivo en keydown haga clic en android
  • Fragmento dentro de la pestaña ¿Actividad perdiendo todos los datos al girar?
  • Uso del icono en la parte superior izquierda de ActionBarSherlock para navegar
  • NoClassDefFoundError al usar proguard
  • InflateException: No se pudo resolver el elemento de menú onClick handler
  • ¿Cómo puedo alinear el botón de ActionMode hecho a la derecha de la ActionBar en lugar de la izquierda?
  • ActionBarSherlock + maven + eclipse: dependencia no encontrada en el espacio de trabajo
  • Configuración de la lista desplegable para el elemento de la barra de acciones
  • Problemas con Android - actionBar.setDisplayHomeAsUpEnabled
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.