Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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
Java 如何在EditText中将选择扩展到整个单词?_Java_Android_String_Android Edittext_Selection - Fatal编程技术网

Java 如何在EditText中将选择扩展到整个单词?

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

所以,我有一个EditText视图,我的想法是在一个,比如现在,触摸事件上选择并复制被触摸的单词到剪贴板内存中。到目前为止,我可以通过offset设置选择,但它只是
,因为
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()
。请参阅可以使用中断迭代器: