如何在操作栏中显示剪切,复制,全选和共享选项?

时间:2015-09-09 06:12:19

标签: android android-layout android-actionbar android-edittext contextual-action-bar

我看到了一些应用程序,比如gmail和其他应用程序 一个editText和textView,同时点击文本长按我可以在操作栏中看到有菜单出现说剪切,复制,全选,共享和查找选项出现。

这与开发人员想要包含在我的应用程序中的行为相同。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

查看本教程,它将帮助您创建上下文操作栏

参考: Tutorial : Contextual Action Bar (CAB) - Android
代码: GitHub : Contextual Action Bar (CAB)

enter image description here

修改

EditText 布局中,添加以下属性以显示用于复制/粘贴的标准Android上下文菜单。

android:textIsSelectable.

同时检查this tutorial

答案 1 :(得分:2)

如果您只想复制,可以在xml的textview中设置以下标记

机器人:textIsSelectable = “真”

如果您想要搜索,请分享选项,因为您必须按如下方式创建Contextual ActionBar

在您的活动中添加以下内容

ActionMode mActionMode;

你必须创建一个ActionMondeCallback接口

class ActionBarCallback implements ActionMode.Callback
    {

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.getMenuInflater().inflate(R.menu.contextual_menu, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

            int id = item.getItemId();
            if(id == R.id.item_delete)
            {
                tv.setText("");
                Toast.makeText(MainActivity.this,"option deleted",Toast.LENGTH_LONG);
            }
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    }

其中contextual_menu.xml如下所示,带有必需的图标

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.example.letschat"
    >
    <item
        android:id="@+id/item_search"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom|withText"
        android:title="Delete"
        android:titleCondensed="Delete">
    </item>
    <item
        android:id="@+id/item_delete"
        android:icon="@android:drawable/ic_menu_delete"
        app:showAsAction="ifRoom|withText"
        android:title="Delete"
        android:titleCondensed="Delete">
    </item>
    <item
        android:id="@+id/item_share"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="ifRoom|withText"
        android:title="Delete"
        android:titleCondensed="Delete">
    </item>
</menu>

现在启用您的Contextual ActionBar(CAB)如下所示,例如,这里是长时间点击textview启用

yourtextView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                mActionMode = MainActivity.this.startActionMode(new ActionBarCallback());
                return true;
            }
        });

然后你必须在点击CAB上的每个动作事件时编写自己的动作

有关详细信息,请按link