Избиране на елемент от менюто за препълване на 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
Не е ли заради публично невалидно извикване onDestroyActionMode(ActionMode mode) {} в 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