安卓系统中如何剪切、复制和粘贴

8
我想在我的EditText中实现剪切、复制、粘贴功能,我尝试使用以下代码: ```java ```
    ClipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    editbox1.setText(ClipMan.getText());

当我把文本粘贴时,它会将整个文本粘贴到另一个编辑框中。我想复制所选文本并将该文本粘贴到同一编辑框中,就像普通记事本一样工作。

非常感谢您的任何建议...


要复制和粘贴,请参见此答案。要剪切,先复制选择内容,然后再删除。 - Suragch
3个回答

5

复制数据

ClipData clip = ClipData.newPlainText("simple text",Value);
ClipMan.setPrimaryClip(clip);

获取已复制的数据

CharSequence pasteData="";
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
pasteData = item.getText();

在您的情况下,您可以使用EditText.getText()代替Value.. 并使用EditText.setText(pasteData);来粘贴数据。

谢谢CapDroid,我正在使用Android 2.1 SDK版本7,但它无法解析ClipData,显示“ClipData无法解析为类型”,你有什么想法吗? - Nibha Jain
很遗憾,大多数示例都有ClipData,而这只在3.0及以上版本可用...!这是不可用的,因为大多数人目前使用Froyo或更早版本。 - User
这看起来很酷。你能帮我把文本粘贴到一个WebView中吗?因为在WebView中我们找不到EditText的ID。http://stackoverflow.com/questions/40377177/paste-text-in-edit-text-of-webview-in-android - Praveen Kumar

3

最终我能够在我的应用程序中进行复制和粘贴了。现在,通过使用以下代码,我只能粘贴选定的文本:

Editable s1;
EditText editbox2;

复制所选文本:

       if(editbox2.getSelectionEnd() > editbox2.getSelectionStart()) 
        {
            s1 = (Editable) editbox2.getText().subSequence(editbox2.getSelectionStart(), editbox2.getSelectionEnd());
        }else
        {
            s1 = (Editable) editbox2.getText().subSequence(editbox2.getSelectionEnd(), editbox2.getSelectionStart());
        }

粘贴所选文本:

             editbox2.getText().replace(Math.min(editbox2.getSelectionStart(),editbox2.getSelectionEnd()), Math.max(editbox2.getSelectionStart(), editbox2.getSelectionEnd()),s1, 0, s1.length());

0

我们可以这样做:

    int min2 = 0;
    int max2 = editText.getText().length();
    if (editText.isFocused()) {
        final int selStart = editText.getSelectionStart();
        final int selEnd = editText.getSelectionEnd();

        min2 = Math.max(0, Math.min(selStart, selEnd));
        max2 = Math.max(0, Math.max(selStart, selEnd));
     }
     ClipData abc = myClipboard.getPrimaryClip();
     ClipData.Item item = abc.getItemAt(0);

     String text = item.getText().toString();
     editText.getText().replace(min2,max2 , text);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接