Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-从EditText获取文本选择_Android_Selection_Android Edittext - Fatal编程技术网

Android-从EditText获取文本选择

Android-从EditText获取文本选择,android,selection,android-edittext,Android,Selection,Android Edittext,我正在尝试实现一个复制/粘贴功能。如何从编辑文本中选择文本 EditText et=(EditText)findViewById(R.id.title); 按钮上的blabla onclicklistener: int startSelection=et.getSelectionStart(); int endSelection=et.getSelectionEnd(); 那我就卡住了。有什么想法吗?通过找到所选区域,您似乎已经完成了困难的部分。现在您只需要从全文中提取子字符串 试试这个:

我正在尝试实现一个复制/粘贴功能。如何从编辑文本中选择文本

EditText et=(EditText)findViewById(R.id.title);
按钮上的blabla onclicklistener:

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

那我就卡住了。有什么想法吗?

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

试试这个:

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

这只是一个基本操作。

您应该使用可编辑对象的特殊功能:

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

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

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

getText()返回一个可编辑的文本。子字符串需要一个字符串。toString()可以正确连接它们。

您可以通过这种方式从
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();

android的一个小问题是getSelectionStart()和getSelectionEnd()指的是选择内容的顺序,这不一定会导致开始<结束…(这里没什么大不了的,但很高兴记住,保存了一些边界外的东西。)伙计们,我很喜欢你的答案,但是我的getSelectionStart()和getSelectionEnd()方法有问题。两者都返回相同的值。et.getText()返回可编辑的。substring()需要一个字符串。您需要添加toString()。即-et.getText().toString().substring(开始,结束)