2016-11-13 1 views
1

В моей деятельности, когда я нажимаю три точки, меню переполнения обычно как этот enter image description hereменю Переполнение показывая на дно

но показывает при длительном нажатии кнопки я «Последние приложения» он показывает в нижней части экрана, как этот

enter image description here

XML для меню:

<?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:id="@+id/search_bar_button" 
     android:icon="@drawable/ic_search" 
     android:title="Search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="ifRoom|collapseActionView" /> 

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

</menu> 

Код для меню:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.toolbar_menu, menu); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    searchButton = menu.findItem(R.id.search_bar_button); 
    searchView = (android.support.v7.widget.SearchView) searchButton.getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(getApplicationContext(), SearchActivity.class))); 

    return true; 
} 

Я пользуюсь панелью инструментов поддержки, и это происходит на всех версиях Android. Также моя тема использует NoActionBar из-за этого?

+0

У вас есть аппаратный ключ для меню? Вам нужно что-то вроде этого http://stackoverflow.com/questions/13307214/how-to-force-overflow-menu-in-actionbar-using-actionbarsherlock-on-4-0-devices –

+0

Нет, я не имею, но когда вы долго нажимаете последнюю кнопку приложения, она должна открывать меню переполнения. И я использую панель инструментов. –

+0

add optionmenu code –

ответ

1

У вас нет жесткого диска. Конечно. Но вызов вашей «длинной прессы последней кнопки приложения» делает то же самое, что и аппаратный вызов меню (действие MenuItem). Затем вам необходимо переопределить этот вызов. Также примеры Here.

Поймайте ключевое событие внутри onKeyDown() и добавьте свое действие туда. Образец:

@Override 
public boolean onKeyDown(int keycode, KeyEvent e) { 
    switch(keycode) { 
     case KeyEvent.KEYCODE_MENU: 
      doSomething(); 
      return true; 
    } 

    return super.onKeyDown(keycode, e); 
} 
2

Вам нужно поймать клавишу меню и открыть меню переполнения. Добавьте это в свою деятельность или AppCompatActivity

@Override 
public boolean onKeyDown(int keycode, KeyEvent e) { 
    switch(keycode) { 
     case KeyEvent.KEYCODE_MENU: 
      mToolbar.showOverflowMenu(); 
      return true; 
    } 
    return super.onKeyDown(keycode, e); 
} 
Смежные вопросы