Выбор пункта меню переполнения в TextView CustomActionModeCallback

Я пытаюсь представить настраиваемую панель действий при длительном нажатии на текстовое представление. В моем меню более 5 элементов, из-за чего некоторые элементы отображаются в дополнительном меню.

Когда я нажимаю значок переполнения, панель действий уничтожается, и я не могу выбрать какой-либо элемент внутри переполнения.

    ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            MenuInflater inflater = mode.getMenuInflater();
            inflater.inflate(R.menu.add_rule_menu, menu);
            return true;
        }

        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            for (int i = 0; i < menu.size(); i++) {
                MenuItem item = menu.getItem(i);
                if (!mOptionsList.contains(item.getItemId()))
                    item.setVisible(false);
            }
            return false;
        }

        // Clicking on overflow button does not trigger this method at all.
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
             // Rest of the code
            }
        }

        public void onDestroyActionMode(ActionMode mode) {}
    };

    textView.setCustomSelectionActionModeCallback(mActionModeCallback);

person Mahadevan Sreenivasan    schedule 17.05.2014    source источник
comment
Разве это не из-за вызова public void onDestroyActionMode (режим ActionMode) {} в onActionItemClick?   -  person Atul O Holic    schedule 17.05.2014
comment
Есть ли способ избежать этого?   -  person Mahadevan Sreenivasan    schedule 17.05.2014
comment
удалить этот вызов или прокомментировать его. Обработайте щелчок по элементу и опубликуйте его, просто вызовите mode.finish(). См. survivingwithandroid.com/2013/04/.   -  person Atul O Holic    schedule 17.05.2014


Ответы (1)


Я подал жалобу по этому поводу много лет назад, которая никогда не решено.

Дрянный обходной путь — использовать вложенные режимы действий. Под этим я подразумеваю, что у вас есть элемент в режиме действия, который завершает текущий режим и запускает новый, чтобы обеспечить эффект «раскрывающегося меню». Я использую это в моем недавно реанимированном виджете RichEditText, который предлагает режим действия для форматирования текста. Я добавляю элемент «формат» в режим действий по умолчанию через setCustomSelectionActionModeCallback(). При нажатии на «Формат» открывается другой режим действий, который предлагает такие параметры, как полужирный и курсив, а также дальнейшие детализации, чтобы перейти к таким мыслям, как изменение шрифта.

person CommonsWare    schedule 17.05.2014
comment
Спасибо за это. Возможно, мне придется сделать какой-то обходной путь, как вы реализовали. Вернувшись после долгого перерыва в разработке Android, я все еще вижу, что такие наивные ошибки повсюду в SDK. - person Mahadevan Sreenivasan; 17.05.2014