gpt4 book ai didi

android - 使用 Android IME 选择

转载 作者:太空狗 更新时间:2023-10-29 15:25:45 25 4
gpt4 key购买 nike

在我的输入法服务中,我试图选择当前光标位置之前的文本。以下是代码 fragment

InputConnection inputConnection = getCurrentInputConnection();
ExtractedText extractedText = inputConnection.getExtractedText(new ExtractedTextRequest(), 0);
inputConnection.setSelection(extractedText.selectionStart-1,extractedText.selectionEnd);

InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.updateSelection(null, extractedText.selectionStart-1,extractedText.selectionEnd, 0, 0);

这有一个非常不稳定的行为,有时它会选择,有时它只是将光标向后移动一步。

谁能指出我做错了什么?

补充:

由于这个问题有一段时间没有得到解答,我想提出另一个问题。我正在寻找一些选择文本的替代方法,在黑客键盘上,按 shift 键然后按箭头键就可以了,但我无法复制这个过程。我尝试发送方向键上下键事件以及 meta_shift_on 标志。

但那是行不通的……再一次,我做错了什么?

最佳答案

IME 中选择的最佳解决方案

private void SelectionLeft() {
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);

}

private void SelectionRight() {
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);

}

关于android - 使用 Android IME 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40521324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com