4

テキストビューを長押ししながら、カスタム アクション バーを表示しようとしています。メニューに 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);
4

1 に答える 1

5

は何年も前にこの件について問題を提起しましたが、解決されたことはありません。

安っぽい回避策は、ネストされたアクション モードを使用することです。これにより、「ドリルダウン メニュー」効果を提供するために、現在のモードを終了して新しいモードを開始するアクション モードに項目があることを意味します。テキストを書式設定するためのアクション モードを提供する最近復活したRichEditTextウィジェットでこれを使用します。を介してデフォルトのアクションモードに「フォーマット」項目を追加しますsetCustomSelectionActionModeCallback()。「フォーマット」をタップすると、太字や斜体などのオプションを提供する別のアクション モードが開き、さらにドリルダウンしてフォントの変更などを検討できます。

于 2014-05-17T14:26:34.757 に答える