2

我正在为 android 设备开发键盘,我是文本编辑选项,如谷歌键盘(文本选择、复制粘贴等)。例如,我输入了一个文本 ABSCEONDER,现在我想选择文本的某些部分。就像我想从 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);
4

2 回答 2

2

谢谢@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);
于 2019-11-09T11:13:53.533 回答
1

你可以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);

            }
        });
于 2019-11-09T07:28:19.913 回答