【问题标题】:How to display Cut,Copy, select all and share options in actionbar?如何在操作栏中显示剪切、复制、全选和共享选项?
【发布时间】:2015-09-09 06:12:19
【问题描述】:

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

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

我怎样才能做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

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

    编辑

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

    android:textIsSelectable.
    

    也检查this tutorial

    【讨论】:

    • 嘿!我昨天提到了这个链接,它只显示了删除选项。
    【解决方案2】:

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

    android:textIsSelectable="true"

    如果你想要搜索,共享选项意味着你必须创建上下文操作栏,如下所示

    在您的活动中添加关注

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2016-12-26
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      相关资源
      最近更新 更多