0

私たちが知っているように、デフォルトでは、ビューでいくつかのテキストを選択した後、android はコンテキスト アクション バー (CAB) をいくつかのデフォルト オプションと共に表示します: コピー、切り取り、すべて選択...

ここで、アプリケーション (ON/OFF の 2 つのオプションしかない) が必要です。これを ON にすると、他のオプションがデフォルトの CAB に追加されます。オフにすると、カスタム オプションが Android のデフォルト CAB から削除されます。

私の質問は、このデフォルトの CAB にいくつかのオプションを追加/削除することは可能ですか? 上記の申請はどのようにすればよいですか?

ありがとうございました!

4

1 に答える 1

0

setCustomSelectionActionModeCallback各 TextViews でを使用する必要があります。

ブール値を持つことができます:

boolean on = true;

次に、実際に CAB を次のように編集するメソッドを作成します。

private void editContextualActionBar(ActionMode actionMode, Menu menu) {
    if (on) {
        // adds a new menu item to the CAB
        // add(int groupId, int itemId, int order, int titleRes)
        menu.add(0, R.id.action_to_be_performed, 1, R.string.action_name);
    } else {
        // removes the new menu item
        menu.removeItem(R.id.action_to_be_performed);
    }
}

最後に、onCreateActionMode で editContextualActionBar メソッドを使用して TextView の Callback を呼び出し、onActionItemClicked でメニュー アクションを実行します。

textView.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            editContextualActionBar(mode, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {

            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_to_be_performed:
                    // perform action
                    return true;
                default:
                    break;
            }
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    });
于 2016-02-04T13:56:18.800 に答える