我正在构建一个Android应用程序,我想复制EditText小部件的文本值。这是可能的用户按菜单+A然后菜单+C复制的值,但我如何通过编程做到这一点?


当前回答

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("label", "Text to copy");
if (clipboard == null || clip == null)
    return;
clipboard.setPrimaryClip(clip);

然后导入android。content。clipboardmanager;

其他回答

要启用TextView的标准复制/粘贴,U可以选择以下选项之一:

在布局文件的变化:添加以下属性到你的TextView

android:textIsSelectable="true"

在Java类中,按照语法编写第二行。

myTextView.setTextIsSelectable(真正的);

长按TextView,你可以看到复制/粘贴操作栏。

google带你到android.content.ClipboardManager,你可以决定,就像我做的那样,Clipboard在API < 11上是不可用的,因为文档页面说“Since: API Level 11”。

实际上有两个类,第二个类扩展了第一个类——android.text.ClipboardManager和android.content.ClipboardManager。

android.text.ClipboardManager从API 1开始就存在了,但它只适用于文本内容。

android.content.ClipboardManager是使用剪贴板的首选方式,但它在API级别< 11(蜂窝)上不可用。

要获得其中任何一个,你需要以下代码:

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

但对于API < 11,你必须导入android.text.ClipboardManager和API >= 11 android.content.ClipboardManager

@FlySwat已经给出了正确答案,我只是分享完整的答案:

使用ClipboardManager。setPrimaryClip (http://developer.android.com/reference/android/content/ClipboardManager.html)方法:

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip); 

标签是一个用户可见标签的剪辑数据和 文本是剪辑中的实际文本。根据官方文件。

使用这个导入是很重要的:

import android.content.ClipboardManager;
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("label", "Text to copy");
if (clipboard == null || clip == null)
    return;
clipboard.setPrimaryClip(clip);

然后导入android。content。clipboardmanager;

public void onClick (View v) 
{
    switch (v.getId())
    {
        case R.id.ButtonCopy:
            copyToClipBoard();
            break;
        case R.id.ButtonPaste:
            pasteFromClipBoard();
            break;
        default:
            Log.d(TAG, "OnClick: Unknown View Received!");
            break;
    }
}

// Copy EditCopy text to the ClipBoard
private void copyToClipBoard() 
{
    ClipboardManager clipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    clipMan.setPrimaryClip(editCopy.getText());
}

你可以试试这个。