2013-03-19 1 views
28

Sto scrivendo un App Android in cui sto cercando di spettacolo Overflow voci di menu a ActionBarCome posso mostrare Overflow voci di menu a barra delle azioni di Android

usando questo grande collegamento tutorial: http://wptrafficanalyzer.in/blog/adding-action-items-and-overflow-menu-items-to-action-bar-in-android/

problema:

Not getting Overflow Menu Items (Icon) 

Si prega di vedere sotto screen shot per maggiore chiarezza: enter image description here

Manifest.xml:

<uses-sdk android:minSdkVersion="14" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:uiOptions="splitActionBarWhenNarrow"    
     > 

items.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item 
    android:id="@+id/phone" 
    android:title="@string/phone" 
    android:icon="@drawable/phone" 
    android:showAsAction="ifRoom|withText" 
/> 

<item 
    android:id="@+id/computer" 
    android:title="@string/computer" 
    android:icon="@drawable/computer" 
    android:showAsAction="ifRoom|withText" 
/> 

<item 
    android:id="@+id/gamepad" 
    android:title="@string/gamepad" 
    android:icon="@drawable/gamepad" 
    android:showAsAction="ifRoom|withText" 
/> 

<item 
    android:id="@+id/camera" 
    android:title="@string/camera" 
    android:icon="@drawable/camera" 
    android:showAsAction="ifRoom|withText" 
/> 

<item 
    android:id="@+id/video" 
    android:title="@string/video" 
    android:icon="@drawable/video" 
    android:showAsAction="ifRoom|withText" 
/> 

<item 
    android:id="@+id/email" 
    android:title="@string/email" 
    android:icon="@drawable/email" 
    android:showAsAction="ifRoom|withText" 
/> 
</menu> 

Sto usando questo tutorial, e cercando di rendere Figura 6: elementi di azione e di menu Overflow a Spalato Barra azioni

Please help me to mostra gli elementi del menu di overflow (ICON) su ActionBar

Ora ogni volta che faccio clic sul pulsante Menu in emulatore, allora io sono sempre Voci resto del menu ....

+1

cambiare la vostra parametro ifRoom per sempre per mostrare tutti gli elementi – Neil

+0

Puoi vedere chiaramente sullo screenshot (dell'articolo collegato) che il dispositivo ha pulsanti Indietro, Home e Attività in modo che non sia possibile richiamare il menu di overflow: http://stackoverflow.com/a/23721321/253468 – TWiStErRob

risposta

46

per mostrano tre icona dot, alla barra delle azioni, basta usare sotto metodo nella OnCreate():

private void getOverflowMenu() { 

    try { 
     ViewConfiguration config = ViewConfiguration.get(this); 
     Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 
     if(menuKeyField != null) { 
      menuKeyField.setAccessible(true); 
      menuKeyField.setBoolean(config, false); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+21

Questo è un hack ... Io sicuramente non lo userei. La risposta accettata dovrebbe essere Akshat Agarwal –

+0

Questo è il modo corretto di mostrare l'icona di overflow? Questo dovrebbe essere accettato come risposta? !!! –

+0

@ max.mustermann può essere che si tratti di un hack o qualunque cosa possa essere.Ma funziona bene.Ho visto questa risposta [qui] (http://stackoverflow.com/questions/9286822/how-to-force-use -di-overflow-menu-on-devices-con-menu-button) – Steve

1

Se ho capito bene la tua domanda e si desidera visualizzare tutte le icone sulla barra delle operazioni cambiare questa parametri in voci di menu

android:showAsAction="ifRoom|withText" 

a questa

android:showAsAction="always" 
+0

Quindi nel tuo menu con gli oggetti di overflow voi vuoi icone al posto del testo? Se è così, non penso che sia possibile. – Neil

+0

@Neil non vuole mostrare gli elementi del menu come elementi di overflow, ma alcuni selezionati. – Anshul

58

Solo per dire che se il dispositivo è dotato di un pulsante di menu, l'icona di overflow non verrà visualizzata, sui telefoni più recenti verrà visualizzato il pulsante di overflow. Non consiglierei la risposta di ASMUIRTI dal momento che è un tremendo trucco che rompe la coerenza con il resto delle app sulla piattaforma.

è necessario utilizzare

android:showAsAction="never" 

e lasciare che il dispositivo Android a decidere se è necessario il menu di overflow per quel dispositivo.

+0

+1 per la risposta di Akshat. Questo ha funzionato per me. – VikramV

+3

su alcuni dispositivi (che ho testato su Galaxy Tab 3, OS 4.2.2) perché l'elemento nascosto è disponibile solo sul pulsante "Menu" fare clic su – Sergii

1

Se si utilizza da librerie di supporto, al fine di mostrare le voci di menu a barra delle operazioni è necessario utilizzare una delle seguenti opzioni di sintassi nella tua xml:

yourappname:showAsAction="ifRoom|withText" 
12

Questo potrebbe essere un altro lavoro in giro, che in realtà mi ha aiutato . Mantiene un drawable con tre punti e assegnalo come voce di menu.

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 


<item 
    android:id="@+id/saveDetails" 
    android:showAsAction="always" 
    android:title="@string/save"/> 

<item 
    android:id="@+id/menu_overflow" 
    android:icon="@drawable/dts" 
    android:orderInCategory="11111" 
    android:showAsAction="always"> 
    <menu> 
     <item 
      android:id="@+id/contacts" 
      android:showAsAction="never" 
      android:title="Contacts"/> 


     <item 
      android:id="@+id/service_Tasks" 
      android:showAsAction="never" 
      android:title="Service Tasks"/> 


     <item 
      android:id="@+id/charge_summary" 
      android:showAsAction="never" 
      android:title="Charge Summary"/> 


     <item 
      android:id="@+id/capture_signature" 
      android:showAsAction="never" 
      android:title="Capture Signature"/> 
    </menu> 
</item> 

</menu> 
+0

Per qualche motivo questo è l'UNICO modo in cui posso farlo funzionare. È così strano! (http://stackoverflow.com/questions/23720815/android-studio-just-cant-get-action-bar-overflow-to-work) Grazie per l'ottimo suggerimento. GRAZIE! – Fattie

0

I telefoni che dispongono del pulsante hardware del menu mostrano voci di menu aggiuntive al clic del pulsante hardware. I telefoni più recenti, senza pulsante del menu hardware, aggiungono automaticamente un'icona del menu Overflow alla barra delle azioni. Le voci di menu extra sono quelle che hanno la proprietà "showAsAction" impostata su mai.

0

Entro AndroidManifest.xml tra add

android:theme="@android:style/Theme.Holo.Light" 

che aggiunge la barra delle azioni nell'applicazione.

Dopo di che, andare a Menu.xml e aggiungere i seguenti

xmlns:tools="http://schemas.android.com/tools 

tra Infine in ogni copia Aggiungi

android:showAsAction="always" 
tools:ignore="AppCompatResource"