2014-12-08 18 views
5

Barra degli strumenti: tasto menu di overflow che mostra sempre

Problema: dopo l'aggiornamento la libreria di supporto e l'utilizzo di barre degli strumenti, il pulsante menu di overflow è sempre mostrando su dispositivi con e senza pulsante del menu hardware

Quello che ho Need: voglio il pulsante menu di overflow per mostrare solo quando il dispositivo non dispone di pulsante del menu hardware

menu.xml

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

<item 
    android:id="@+id/action_settings" 
    app:showAsAction="never" 
    android:title="@string/action_settings"/> 

<item 
    android:id="@+id/import_data" 
    app:showAsAction="never" 
    android:title="@string/import_data"/> 

dell'attività (ActionBarActivity)

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

e in onCreate: setSupportActionBar (mToolbar);

L'aiuto sarebbe apprezzato!

+0

Qual è il tuo codice? –

+0

@Azael vedi modifica –

+0

try app: showAsAction = "always" – mmlooloo

risposta

2

ho trovato la soluzione al mio problema:

1- non chiamare setSupportActionBar(mToolbar); più, invece usare toolbar direttamente

2- verifica se il dispositivo dispone di un pulsante di menu hardware chiamando ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(getApplicationContext()));:

3- se il dispositivo ha tasto di menu torno vero stradale di onCreateOptionsMenu, altro che gonfiare il menu nella barra

+1

Ancora, sembra che abbiamo perso alcune funzionalità lì .. – milosmns

+0

Non funziona qui – Leebeedev

2

Y Puoi cambiare il comportamento del pulsante del menu hardware quando è presente per mostrare/nascondere il menu di overflow della barra degli strumenti. Per fare ciò, ignorare il metodo onKeyUp di Activity.

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     if (mToolbar.isOverflowMenuShowing()) { 
      mToolbar.hideOverflowMenu(); 
     } else { 
      mToolbar.showOverflowMenu(); 
     } 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 
0

Funziona correttamente (almeno per me).

Nel metodo onCreate della vostra attività fare:

boolean hasHarwareMenu = ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(getApplicationContext())); 
    if (!hasHarwareMenu) setSupportActionBar(toolbar); 

e gonfiare il tuo menu.xml come normale nel onCreateOptionsMenu.

Problemi correlati