在复制的文本中添加额外的文本

时间:2014-08-31 17:18:45

标签: java android

我的应用程序中有这个TextView

   <TextView
        android:id="@+id/txtStatusMsg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="10dp"
        android:paddingLeft="@dimen/feed_item_status_pad_left_right"
        android:paddingRight="@dimen/feed_item_status_pad_left_right"
        android:paddingTop="@dimen/feed_item_status_pad_top"
        android:textIsSelectable="true"
         />

及其可选择..当我选择文本并复制它时,我想添加额外的文本

示例:

测试文字

我想要的是当我选择文本并复制它时:

测试文本 - 从xx app

复制

我怎么做?

1 个答案:

答案 0 :(得分:1)

您想添加一个clipboardListener:

private boolean mSkipClip;

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    final ClipboardManager mClipboard = (ClipboardManager)mAct.getSystemService
            (Context.CLIPBOARD_SERVICE);

    mClipboard.addPrimaryClipChangedListener(new ClipboardManager
            .OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
            if (mSkipClip) {
                mSkipClip = false;
            } else {
                // Append custom string
                ClipData clipData = new ClipData(mClipboard.getPrimaryClip());
                clipData.addItem(new ClipData.Item("Copied from xx app"));
                mSkipClip = true;
                mClipboard.setPrimaryClip(clipData);
            }
        }
    });
}

注意:

  • ClipData类仅在API 16之后可用。
  • 自API 11以来,可以使用其他类和方法。
  • 更新剪贴板数据时,将再次调用侦听器。 mSkipClip帮助听众跳过此类回调。
  • 暂停您的活动时,请务必删除该监听器,因为它也会监听其他活动和应用上的剪贴板活动。