Android IME,获取EditText实例

标签 android android-softkeyboard

我目前正在开发一个输入法,它需要知道文本内容才能计算出光标所在的行和字符等信息。这适用于全屏模式下的提取文本,但我希望不必强制全屏。这是我当前实现的相关代码:

private ExtractEditText mExtract;

...

    mExtract = new ExtractEditText(this);
    mExtract.setId(android.R.id.inputExtractEditText);
    setExtractView(mExtract);

...

@Override public void onUpdateSelection(int oldSelStart, int oldSelEnd, int newSelStart, int newSelEnd, int candidatesStart, int candidatesEnd) {
    super.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd, candidatesStart, candidatesEnd);
    String textToMeasure = mExtract.getText().toString().substring(0, newSelStart);
    Log.w("myIME", "Line: " + countLines(textToMeasure));
}

最佳答案

我查看了InputMethodService的源代码,发现它如何提取文本以供ExtractEditText使用,因此我能够创建一个解决方案:

private String getExtractText() {
    ExtractedTextRequest req = new ExtractedTextRequest();
    req.token = 0;
    req.flags = InputConnection.GET_TEXT_WITH_STYLES;
    req.hintMaxLines = 10;
    req.hintMaxChars = 10000;
    ExtractedText et = getCurrentInputConnection().getExtractedText(req, InputConnection.GET_EXTRACTED_TEXT_MONITOR);
    return et.text.toString();
}

关于Android IME,获取EditText实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873577/

相关文章:

java - 单击按钮删除字符串的最后 2/3 个字符(Java/android)

Android Studio - V-23 文件错误 - 无法编译

在 webview 中单击输入时不显示 Android 键盘

java - 返回图像资源 ID

android - 如何将我的布局拆分为 3 个不同的滑动 View

android - 如何在 videoview android 中播放来自 youtube 源的视频

android - 在 Android Pie 中输入 Activity 时不显示键盘 (API-28)

android - 如何防止键盘在单击发送按钮时像 whatsapp 一样隐藏并持续关注 android 中的编辑文本

打开软键盘时,Android pie edittext 键入的文本不显示

长按Android自定义键盘弹出键盘