Java 如何在“编辑文本”中找到光标的位置以从该位置选择文本?

Java 如何在“编辑文本”中找到光标的位置以从该位置选择文本?,java,android,android-softkeyboard,richtextediting,inputconnection,Java,Android,Android Softkeyboard,Richtextediting,Inputconnection,我正在为android设备开发键盘,在那里我可以像谷歌键盘一样编辑文本(文本选择、复制粘贴等)。 例如,我在空白处键入了一个文本,现在我想选择文本的某些部分。就像我想要从位置E选择文本一样。我所做的是手动将光标下垂到位置E。现在我如何找到光标的位置以从该位置选择文本?有人能帮忙吗 ExtractedText extractedText = mLatinIme.getCurrentInputConnection().getExtractedText(new ExtractedTextReques

我正在为android设备开发键盘,在那里我可以像谷歌键盘一样编辑文本(文本选择、复制粘贴等)。 例如,我在空白处键入了一个文本,现在我想选择文本的某些部分。就像我想要从位置E选择文本一样。我所做的是手动将光标下垂到位置E。现在我如何找到光标的位置以从该位置选择文本?有人能帮忙吗

 ExtractedText extractedText = mLatinIme.getCurrentInputConnection().getExtractedText(new ExtractedTextRequest(), 0);
                if (extractedText == null || extractedText.text == null) return;
                int index = extractedText.text.length();
                mLatinIme.getCurrentInputConnection().setSelection(0, index);

您可以从
EditText
获取光标位置,如下所示:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {

              int pos = editText.getSelectionStart();
              Layout layout = editText.getLayout();
              float x = layout.getPrimaryHorizontal(pos);

            }
        });

谢谢你@mohammadReza Abiri。我找到了解决办法

 ExtractedText extractedText = mLatinIme.getCurrentInputConnection().getExtractedText(new ExtractedTextRequest(), 0);
        if (extractedText == null || extractedText.text == null) return;

        int selectionStart = extractedText.selectionStart;
        int selectionEnd = extractedText.selectionEnd;

        mLatinIme.getCurrentInputConnection().setSelection(selectionStart, selectionEnd + 1);

bro是否处于输入连接?例如,如果我们在手机上键入message,那么如何查找位置?如果我使用int pos=mLatinIme.getCurrentInputConnection(),则getstartselection不起作用。