如何从编辑文本中的那个位置找到光标到 select 文本的位置?
How to find the position of Cursor to select text from that position in Edit text?
我正在为 android 设备开发键盘,我正在使用文本编辑选项,例如 Google 键盘(文本 selection、复制粘贴等)。
例如,我输入了文本 ABSCEONDER,现在我想 selection 文本的一部分。就像我想要来自位置 E 的文本 selection。我所做的是手动将光标下垂到位置 E。现在我如何从该位置找到 select 文本的光标位置?任何人都可以帮忙吗?
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);
我正在为 android 设备开发键盘,我正在使用文本编辑选项,例如 Google 键盘(文本 selection、复制粘贴等)。 例如,我输入了文本 ABSCEONDER,现在我想 selection 文本的一部分。就像我想要来自位置 E 的文本 selection。我所做的是手动将光标下垂到位置 E。现在我如何从该位置找到 select 文本的光标位置?任何人都可以帮忙吗?
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);