2014-01-22 10 views

Antwort

1
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); 
} 
+0

Icon Ich habe bereits für Menüpunkte ... Ich meine, zusammen mit Symbol, Titel kann ich auch einen Schalter haben? Ich muss den Toggle-Status speichern. – Mathew

0

Meinen Sie Sich einen Umschaltknopf als eines der Elemente/Elemente hinzuzufügen im Optionsmenü erscheinen, oder eine Schaltfläche, um ein Listenelement aus dem Menü hinzufügen?

Dann können Sie es mit einem benutzerdefinierten Layout tun (mit einem ListView innerhalb wenn Sie möchten) und in der

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

Aufblasen und Sie können die Werte jedes Mal, speichern Sie die Taste schaltet ist.

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

UPDATE

Sie ein benutzerdefiniertes Layout in einem Menüpunkt können Toggle-Button hinzuzufügen.

Erstellen Sie ein Layout mit Switch (alternativ auch ToggleButton verwenden), res/layout/menu_switch.xml:

<?xml version="1.0" encoding="utf-8"?> 
<Switch xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:padding="64dp" /> 

und verwenden, die das Layout im Menüpunkt:

<?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:title="@string/switch_button_title" 
     app:actionLayout="@layout/menu_switch" 
     app:showAsAction="always" /> 
</menu> 


Sie muss android:checkable Eigenschaft des Menüs zusetzenund steuern den Status der Überprüfung in Runtime. Beispiel:

Menü:

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

Aktivität:

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

Hoffnung, das hilft.

+1

Dies bietet nur ein Kontrollkästchen. – Mathew

+1

Ein Kontrollkästchen ist im Wesentlichen eine Umschaltfläche: Es schaltet zwischen zwei Zuständen um :) – ozbek

+0

Ich konnte keine Checkbox sehen: \ – Li3ro

Verwandte Themen