ActionModeメニューのレイアウト定義ファイルにshowAsActionが効かない場合、対応する方法をメモします。
menu定義ファイルにapp:showAsAction="always"を記述しているにも拘らず、メニューアイテムが・・・の中に入ってしまいます。
<?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/action_menu_item_search"
android:icon="@android:drawable/ic_menu_search"
android:onClick="onActionItemClicked"
android:title="@string/action_menu_item_search"
app:showAsAction="always">
</item>
<item
android:id="@+id/action_menu_item_save"
android:icon="@android:drawable/ic_menu_save"
android:onClick="onActionItemClicked"
android:title="@string/action_menu_item_save"
app:showAsAction="always">
</item>
</menu>
プログラミングでメニューアイテムの該当属性を設定すれば、解決になります。
@Override
public void onActionModeStarted(ActionMode mode) {
if (actionMode == null) {
actionMode = mode;
Menu menu = mode.getMenu();
// Inflate your own menu items
mode.getMenuInflater().inflate(R.menu.menu_action_mode2, menu);
menu.getItem(2).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.getItem(3).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
super.onActionModeStarted(mode);
}