2014-12-08 9 views
5

Toolbar: Überlauf Menü-Taste immer zeigt

Problem: Nachdem die Support-Bibliothek aktualisieren und Symbolleiste verwenden, die Überlaufmenü-Taste immer

auf Geräte mit und ohne Hardware-Menü-Taste zeigt, was ich müssen: ich das Überlaufmenü-Taste soll nur zeigen, wenn das Gerät keine Hardware Menütaste

menu.xml

hat

in der Aktivität (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; 
} 

und in onCreate: setSupportActionBar (mToolbar);

Hilfe wäre willkommen!

+0

Wie lautet Ihr Code? –

+0

@Azael siehe bearbeiten –

+0

versuch app: showAsAction = "immer" – mmlooloo

Antwort

2

fand ich die Lösung für mein Problem:

1- rufen Sie nicht setSupportActionBar(mToolbar); mehr vorhanden, stattdessen Toolbar direkt verwenden

2- Überprüfung, ob das Gerät eine Hardware-Menü-Taste hat durch Aufruf ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(getApplicationContext()));:

3-, wenn das Gerät Menü-Taste hat i Return on wahr in onCreateOptionsMenu, sonst aufblasen i das Menü in der Toolbar

+1

Dennoch scheint, dass wir einige Funktionalität verloren haben .. – milosmns

+0

Funktioniert hier nicht – Leebeedev

2

Y Sie können das Verhalten der Hardware-Menüschaltfläche ändern, wenn diese vorhanden ist, um das Überlaufmenü der Werkzeugleiste ein-/auszublenden. Überschreiben Sie dazu die onKeyUp Methode von 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

Es funktioniert gut (zumindest für mich).

Im onCreate Methode Ihrer Aktivität zu tun:

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

Und Ihre menu.xml als normal im onCreateOptionsMenu aufzublasen.

Verwandte Themen