如何在剪贴板复制选项中单击android中显示Toast消息

时间:2015-06-18 06:54:33

标签: android copy clipboard copy-paste toast

在我的片段中,我使用了一个布局。在那里,对于一个textview,我需要提供复制选项。

<TextView
                    android:id="@+id/txtShareWinurl"
                    style="@style/matchWidth"
                    android:layout_height="@dimen/dimen_fifty"
                    android:layout_gravity="center"
                    android:layout_margin="@dimen/dimen_ten"
                    android:background="@drawable/verylight_gray_bg_border"
                    android:gravity="center"
                    android:padding="@dimen/dimen_five"
                    android:text="@string/app_name"
                    android:textColor="@color/gray_code"
                    android:textSize="@dimen/dimen_fifteen"
                    android:textIsSelectable="true"
                    android:textStyle="bold" />

因为我使用textIsSelectable而不是使用copy和selectall选项的窗口。但是当我点击该选项时,我需要显示一个祝酒词。请帮我。

我尝试过谷歌一些链接,但我没有成功。

3 个答案:

答案 0 :(得分:1)

这取决于您的场景,但您可以使用ClipboardManager检测剪贴板更改:

this

示例代码:

ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
    @Override
    public void onPrimaryClipChanged() {
        Toast.makeText(MainActivity.this, "Content changed", Toast.LENGTH_LONG).show();
    }
});

答案 1 :(得分:1)

检查this

你可以覆盖ClipboardManager的onPrimaryClipChanged()Listner

答案 2 :(得分:1)

我知道的唯一方法是使用ActionMode.Callback接口

private class ActionModeCallbackWrapper implements ActionMode.Callback {
    private final ActionMode.Callback wrapped;

    private ActionModeCallbackWrapper(ActionMode.Callback wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        return wrapped.onCreateActionMode(mode, menu);
    }

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

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        return wrapped.onActionItemClicked(mode, item);
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        wrapped.onDestroyActionMode(mode);
    }
}

并在您的视图中使用它,如下所示(docs

@Override
public ActionMode startActionMode(ActionMode.Callback callback) {
    mActionMode = super.startActionMode(new ActionModeCallbackWrapper(callback));
    return mActionMode;
}

因此,您可以检测onActionItemClicked事件并显示吐司或任何您想要的内容