All ActionMode Bar icons not showing in Android?

I created a menu for my actionmode panel with icons, but not all menus are displayed with an icon in the actionmode panel. This is my XML menu file.

<?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/menu_archive"
    android:icon="@drawable/ic_action_file_archive"
    android:orderInCategory="100"
    android:title="@string/action_remove"
    app:showAsAction="always" />
<item
    android:id="@+id/menu_upload_to_cloud"
    android:icon="@drawable/ic_action_file_cloud_upload"
    android:orderInCategory="200"
    android:title="@string/action_upload_to_cloud"
    app:showAsAction="always" />
<item
    android:id="@+id/menu_delete"
    android:icon="@drawable/ic_action_file_delete"
    android:orderInCategory="300"
    android:title="@string/action_move_to_trash"
    app:showAsAction="always" />
</menu>

This is my code for creating an Actionmode Bar.

    @Override
public boolean onCreateActionMode(android.support.v7.view.ActionMode mode, Menu menu) {
    MenuInflater inflater = mode.getMenuInflater();
    inflater.inflate(R.menu.menu_actionmode_device_documents, menu);
    return true;
}

@Override
public boolean onPrepareActionMode(android.support.v7.view.ActionMode mode, Menu menu) {
    return false;
}

@Override
public boolean onActionItemClicked(android.support.v7.view.ActionMode mode, MenuItem item) {

}

@Override
public void onDestroyActionMode(android.support.v7.view.ActionMode mode) {
    this.actionMode = null;
}

Output This image is my conclusion, which displays only one menu icon, but I want all the other icons too.

+4
source share
1 answer

It may be too late, but I put this answer in case someone else runs into the same problem. It seems that the system does not support attribute counting app:showAsAction="always".

The idea is to update the menu manually in onPrepareActionMode

@Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            menu.findItem(R.id.menu_archive).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
            menu.findItem(R.id.menu_upload_to_cloud).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
            menu.findItem(R.id.menu_delete).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

            return true;
}

It seems strange, but it works.

+11
source

All Articles