2

需要从文本视图中选择文本到所需范围并进行复制。我尝试在文本视图上使用 onClick 侦听器,并且android:textIsSelectable="true"在 xml 中添加

@Override
public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            textView = (TextView)findViewById(R.id.textview1);

                textView.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                                            textView.setKeyListener(null);
                        textView.setFocusable(true);


                        String stringYouExtracted = textView.getText().toString();
                        int startIndex = textView.getSelectionStart();
                        int endIndex = textView.getSelectionEnd();
                        stringYouExtracted = stringYouExtracted.substring(startIndex, endIndex);
                        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                        clipboard.setText(stringYouExtracted);
                    }
                });
     Toast.makeText(this, "Text clipped!", Toast.LENGTH_SHORT)
                 .show();

            }

        }

但它没有选择文本,也没有得到要复制的文本

4

3 回答 3

1

Try it :

txt=(TextView)findViewById(R.id.textView1);
        String stringYouExtracted = txt.getText().toString();
        int startIndex = txt.getSelectionStart();
        int endIndex = txt.getSelectionEnd();
        stringYouExtracted = stringYouExtracted.substring(startIndex, endIndex);
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        clipboard.setText(stringYouExtracted);

And Add android:textIsSelectable="true" too ...........

于 2014-03-31T06:28:51.440 回答
1

尝试这个..

删除下面的行..

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                        clipboard.setText(stringYouExtracted);

并添加以下行..

if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
    android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    clipboard.setText(stringYouExtracted);
} else {
    android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", stringYouExtracted);
            clipboard.setPrimaryClip(clip);
}

我希望这个能帮上忙..

于 2013-10-09T04:58:27.723 回答
0

你可以这样做:

ClipboardManager myClipboard = myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData myClip;
EditText editText = (EditText) findViewById(R.id.editText3);
int min = 0;
int max = editText.getText().length();
if (editText.isFocused()) {
    final int selStart = editText.getSelectionStart();
    final int selEnd = editText.getSelectionEnd();
    min = Math.max(0, Math.min(selStart, selEnd));
    max = Math.max(0, Math.max(selStart, selEnd));
}
// here is your selected text
final CharSequence selectedText = editText.getText().subSequence(min, max);
String text = selectedText.toString();


// copy to clipboard
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);

用 TextView 替换 EditText。

于 2015-05-08T09:32:41.080 回答