@Override public void onConfigurationChanged(Configuration newConfig) { setKeyboardVisibility(newConfig); super.onConfigurationChanged(newConfig); if (actionBarCompat != null) { // ActionBar's capacity (width) has probably changed, so work around // http://code.google.com/p/android/issues/detail?id=20493 // (invalidateOptionsMenu() does not help here) if (actionBarCompat != null) { // Just cautiously fix the common case: if >850dip then force // show everything, else let the platform decide DisplayMetrics dm = getResources().getDisplayMetrics(); int screenWidthDIP = (int) Math.round(((double) dm.widthPixels) / dm.density); boolean reallyWide = screenWidthDIP > 850; int state = reallyWide ? ActionBarCompat.SHOW_AS_ACTION_ALWAYS : ActionBarCompat.SHOW_AS_ACTION_IF_ROOM; actionBarCompat.menuItemSetShowAsAction(menu.findItem(R.id.settings), state); actionBarCompat.menuItemSetShowAsAction(menu.findItem(R.id.solve), state); actionBarCompat.menuItemSetShowAsAction(menu.findItem(R.id.help), state); state |= ActionBarCompat.SHOW_AS_ACTION_WITH_TEXT; actionBarCompat.menuItemSetShowAsAction(menu.findItem(R.id.game), state); actionBarCompat.menuItemSetShowAsAction(menu.findItem(R.id.type), state); actionBarCompat.menuItemSetShowAsAction(menu.findItem(R.id.other), state); } } }