Java 如何在EditText中将选择扩展到整个单词?
所以,我有一个EditText视图,我的想法是在一个,比如现在,触摸事件上选择并复制被触摸的单词到剪贴板内存中。到目前为止,我可以通过offset设置选择,但它只是Java 如何在EditText中将选择扩展到整个单词?,java,android,string,android-edittext,selection,Java,Android,String,Android Edittext,Selection,所以,我有一个EditText视图,我的想法是在一个,比如现在,触摸事件上选择并复制被触摸的单词到剪贴板内存中。到目前为止,我可以通过offset设置选择,但它只是”,因为getSelectionStart()=getSelectionEnd()=offset。如何将其扩展到下一个遇到的空白或文本的结束/开始 我如何以上述方式扩展这样的选择 迄今为止的代码: @Override public boolean onTouch(View v, MotionEvent event) { if
”
,因为getSelectionStart()=getSelectionEnd()=offset
。如何将其扩展到下一个遇到的空白或文本的结束/开始
我如何以上述方式扩展这样的选择
迄今为止的代码:
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN) {
float x = event.getX() + getScrollX();
int offset = getOffset(event);
if(offset != Integer.MIN_VALUE){
setSelection(offset);
String selectedText = getText().toString()
.substring(getSelectionStart(), getSelectionEnd());
//TODO: extend selection otherwise copies ""
putInClipMemory(selectedText);
}
return true;
}
谢谢。您应该能够在开始选择索引后计算下一个空格的索引,并在设置
selectedText
时调用substring
时使用该索引(endIndex
),而不是getSelectionEnd()
例如:
String substringFromStartSelection = getText().toString().substring (getSelectionStart());
int nextSpaceIndex = substringFromStartSelection.indexOf(" ");
int selectionEnd = getSelectionStart() + nextSpaceIndex;
如果单词以句号、空格、引号或…结尾,则不起作用。。。。另一种方法是使用
BreakIterator.getWordInstance()
。请参阅可以使用中断迭代器: