10

我正在尝试实现复制/粘贴功能。如何从 EditText 中选择文本?

EditText et=(EditText)findViewById(R.id.title);

blabla onclicklistener 按钮:

int startSelection=et.getSelectionStart();
int endSelection=et.getSelectionEnd();

然后我被卡住了。有任何想法吗?

4

5 回答 5

16

似乎您已经通过查找所选区域完成了困难的部分。现在您只需要将那个子字符串从全文中提取出来。

尝试这个:

String selectedText = et.getText().substring(startSelection, endSelection);

这只是一个基本的Java 字符串操作。

于 2010-01-29T17:45:14.957 回答
0

您应该使用 Editable 对象中的特殊功能:

Editable txt = et.getText();
txt.replace(int st, int en, CharSequence source)

此命令将 (st..en) 指定的部分替换为字符串 (CharSequence)。

于 2010-08-26T17:34:23.130 回答
0

您不需要执行所有这些操作,只需长按编辑文本,它将显示复制/粘贴/选择等所有相关选项。如果要保存文本,请使用 mbaird 显示的方法

于 2012-10-12T09:23:35.293 回答
0

String selectedText = et.getText().toString().substring(startSelection, endSelection);
getText() 返回一个可编辑的。子字符串需要一个字符串。toString() 正确连接它们。

于 2015-01-29T05:45:40.070 回答
0

您可以通过以下方式获取所选文本EditText

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();
于 2015-05-08T07:19:55.797 回答