È ansible implementare il button Toggle nel menu di azione menu utilizzando Sherlock di Actionbar in android

Ho un'applicazione che ha il button di commutazione nella voce di menu di azione, anche se sto utilizzando Actionbar Sherlock, non so, come posizionare il button di commutazione nella voce di menu di azione. Non voglio collocare come layout personalizzato nella barra degli strumenti, ma voglio posizionarla come elemento di menu. Se qualcuno trova soluzione, ti prego di aiutarmi.

Scopo, Se cambio lo stato del button di commutazione, ordinerà la persona basata su ALfabeti e di nuovo in data di nascita.

  • Metodo onTouchEvent non viene chiamato
  • Copia il text da Android AlertDialog?
  • Inizializzazione dell'object TextToSpeech su un thread di lavoratore
  • Android Studio - L'emulatore Tablet non mostra la risoluzione corretta
  • Come mostrare Google Map V2 su Android Emulator?
  • Programmaticamente abilitare il bluetooth su Android
  • Grazie in anticipo!

    4 Solutions collect form web for “È ansible implementare il button Toggle nel menu di azione menu utilizzando Sherlock di Actionbar in android”

    Basta aggiungere come un normale button del menu, controllare lo stato con una variabile booleana e puoi cambiare l'icona e il titolo quando cambia il tipo di modifica

     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); } 

    Non dimenticare di aggiungerlo in xml come qualsiasi altro button di menu e configurare android:showAsAction se vuoi mostrarla in overflow o al di fuori di esso.

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

    Un altro approccio sarebbe quello di utilizzare un layout personalizzato per il tuo ActionBar:

    Fondamentalmente si definisce un layout che contiene la 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> 

    ALTERNATIVO 1: quindi nel tuo contenitore Attività o Frammento :

     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); 

    Notate che hai un vero e proprio ToggleButton e lo stai trattando nel codice come un vero e proprio object ToggleButton, che ha molti vantaggi rispetto all'utilizzo di una nuova function (tema, affidabilità, gerarchia delle visualizzazioni, supporto nativo …) .

    Il codice sorgente qui .


    ALTERNATIVO 2: Un altro modo per farlo è incorporare la visualizzazione personalizzata in una normale visualizzazione del menu:

     <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> 

    Se, come me, l'actionLayout non funziona per te, prova a app:actionLayout="@layout/actionbar_service_toggle" invece di android:actionLayout="@layout/actionbar_service_toggle" così come app:showAsAction="always" invece di android:showAsAction="always" Questo è perché se si utilizza appCompat lo spazio dei nomi android non verrà utilizzato.

    Ecco la versione finale:

     <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> 

    e

     <?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> 

    creare il file xml nel menu:

    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> 

    E poi vai alla cartella layout crea un nuovo file xml e lo denomina switch_layout.xml Ecco il codice: 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> 

    Nella class MainActivity copia e incolla questo codice:
    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 segui questo collegamento su questa roba

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.