Я вообще не фанат стандартного меню опций, поэтому ВСЕГДА создаю персонализированное меню с ViewStubs . Просто создайте новый макет, в котором вы создаете панель меню, интегрируете ее с ViewStub в файлы макетов и позволяйте меню скользить.
Пример кода Java:
public boolean onKeyDown( int keyCode, KeyEvent event ) {
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
mMenuPanel = ( ( ViewStub ) findViewById( R.id.stub_onoption ) ).inflate();
// initialize buttons of your menu layout and define setOnClickListener()
if( !menuVisible ) {
constants.showPanel( this, mMenuPanel, true );
menuVisible = true;
} else {
constants.hidePanel( this, mMenuPanel, true );
menuVisible = false;
}
return true;
default:
break;
}
}
public static void hidePanel( Context context, View panel, boolean slideDown ) {
panel.startAnimation( AnimationUtils.loadAnimation( context, slideDown ? R.anim.slide_out : R.anim.slide_in_top ) );
panel.setVisibility( View.GONE );
}
public static void showPanel( Context context, View panel, boolean slideUp ) {
panel.startAnimation( AnimationUtils.loadAnimation( context, slideUp ? R.anim.slide_in : R.anim.slide_out_top ) );
panel.setVisibility( View.VISIBLE );
}
Таким образом, вы сможете полностью настроить панель меню (фоновые кнопки и т. Д.)
Редактировать: Это просто грубая идея, как это сделать. И если вы делаете это в первый раз, это может быть немного избыточно только для изменения цвета фона, но позже вы сможете использовать эту концепцию в различных случаях, таких как различные эффекты слайдов, корректируя дизайн меню в соответствии с дизайн вашего приложения, изменить местоположение, размер и многое другое.
Кроме того, этот вид концепции может также использоваться для дополнительных панелей поиска или уведомлений в приложении (если вы не хотите использовать диалоговое окно). Так что это определенно стоит посмотреть.