2014-12-08 13 views
5

Toolbar: Przepełnienie przycisk menu zawsze pokazuje

Problem: po zaktualizowaniu biblioteki wsparcie i za pomocą pasków narzędzi, przycisk menu przepełnienia jest zawsze pokazano na urządzeniach i bez przycisku menu sprzętowym

Co ja potrzebujesz: Chcę przycisk menu przepełnienia pokazać tylko wtedy, gdy urządzenie nie ma przycisku menu sprzętu

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

aktywności (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; 
} 

i onCreate: setSupportActionBar (mToolbar);

Pomoc byłaby doceniona!

+0

Jaki jest twój kod? –

+0

@Azael zobaczyć edit –

+0

try aplikację: showAsAction = „always” – mmlooloo

Odpowiedz

2

znalazłem rozwiązania mojego problemu:

1- Nie nazywaj setSupportActionBar(mToolbar); więcej, zamiast skorzystać z paska bezpośrednio

2- sprawdzić, czy urządzenie posiada przycisk menu sprzętu wywołując ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(getApplicationContext()));:

3- jeśli urządzenie posiada przycisk menu i powrócić true w onCreateOptionsMenu, indziej i nadmuchać menu w pasku narzędzi

+1

Mimo to, wydaje się, że straciliśmy tam niektóre funkcjonalności .. – milosmns

+0

tu nie pracuje – Leebeedev

2

Y możesz zmienić zachowanie przycisku menu sprzętowego, gdy jest obecny, aby pokazać/ukryć menu przepełnienia paska narzędzi. Aby to zrobić, należy zastąpić metodę onKeyUp z 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

Działa dobrze (przynajmniej dla mnie).

W metodzie onCreate swojej działalności zrobić:

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

A nadmuchać swój menu.xml normalnie w onCreateOptionsMenu.

Powiązane problemy