问题标签 [android-extracted-text]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3676 浏览

android - 什么是 Android“提取文本 UI”?

我最近遇到了一个错误,我的小型 EditText 正在膨胀以填充软键盘未占用的任何空间。但仅限于横向模式。

我发布了这个并得到了一个有用的 StackOverflow 成员的快速回复,我需要添加android:imeOptions="flagNoExtractUi",所以我做到了,它成功了!

但我还是不明白。文档说它是“用于指定 IME 不需要显示其提取的文本 UI” 好的,那是什么?http://developer.android.com的“搜索开发人员文档”功能在他们的文档中显示了“提取文本 UI”这个短语使用了 34 次,但我没有注意到定义。

有人可以解释它是什么,为什么它只影响横向模式?提前致谢。

0 投票
1 回答
355 浏览

android - 如何在自定义编辑器视图中更新提取的文本

我为垂直蒙古语文本创建了一个自定义编辑器。带圆圈的视图显示了我的自定义编辑器。底部的键盘是系统键盘。

在此处输入图像描述

但是,当系统键盘以横向输入文本时,键盘可能会显示提取的文本视图,而不是我的自定义编辑器视图。下面带圆圈的视图是提取的文本视图(我的自定义编辑器没有更新)。

在此处输入图像描述

我需要以某种方式将更新从我的视图发送到输入法管理器。这在InputConnection文档中有所说明:

编辑作者:作为一般规则,请尽量遵守要求返回多少字符的字段,但如果性能或方便另有规定,请随意做最适合您情况的事情。此外,如果GET_EXTRACTED_TEXT_MONITOR 设置了标志,您应该在调用 InputMethodManager.updateExtractedText(View, int, ExtractedText) 时调用InputMethodManager.updateSelection(View, int, int, int, int)

我一直在探索与提取文本相关的源代码

但我迷路了。

这是我得到的最接近的。这是我的自定义编辑器中的一种方法。

当我在我的编辑器中时,我没有对 的引用ExtractedTextRequest,它应该用于修改我在提取的文本更新中包含的内容。

这是我的子类中的另一种方法(从此处BaseInputConnection稍作修改)。我可以访问,但这不是我调用更新的地方。这将导致提取的文本视图正确显示初始文本,但更新仍然没有得到应用。该方法由 调用,也可以由自定义输入法调用。ExtractedTextRequestInputMethodService

我在这里添加了一个更通用的 MCVE 。

0 投票
1 回答
68 浏览

android - ExtractedText 的用例

我试图ExtractedText从官方文档中了解,因为在网上找不到任何其他博客/材料,而且似乎技术文档是大量的行话。

有人可以解释一下它的用例/目的吗?我唯一知道的是,它可以在全屏模式下用于在用户键入时显示提取的文本部分,但我需要了解更实际的场景和更好的解释。

参考链接:

https://developer.android.com/reference/android/view/inputmethod/ExtractedText

0 投票
2 回答
466 浏览

android - 如何为自定义 Android 视图实现提取文本

背景

Android 中的自定义编辑器视图能够通过InputConnection. 我已经能够成功地做出这样的看法。但是,当设备处于横向模式时,系统有时会选择显示提取的文本视图。当用户在此模式下键入时,提取的文本视图应使用与自定义视图中相同的文本进行更新。

我无法实现提取的文本视图功能。(这是我尝试过的一些事情。

我也找不到任何明确的文档或完整的示例来说明如何做到这一点。(这里有一些我读过的更好的东西:)。

MCVE

我已经创建了最基本的自定义编辑器。以下 gif 显示了该功能。它可以从键盘接收文本,但不会更新提取的横向文本视图。因此,除非您关闭键盘,否则您看不到更新的文本。

在此处输入图像描述

MyCustomView.java

MyInputConnection.java

MainActivity.java

activity_main.xml

概括

我正在寻找一个规范的答案,该答案描述并举例说明如何为自定义编辑器视图实现提取的文本更新。

如果我自己弄清楚,我会添加我自己的答案。在那之前,我能做到的最好的就是完全禁用提取的文本。这并不理想。

0 投票
1 回答
125 浏览

android - 如何在 Android 中为自定义键盘修改 ExtractedEditText

我想在自定义键盘的提取文本视图中更改文本的字体和文本大小。如何获得对 的引用EditText

我刚刚通过检查源代码学会了如何做到这一点InputMethodService,所以我将其发布为问答。我的答案如下。

0 投票
0 回答
112 浏览

android - Android Extracted Text UI:自定义上下文菜单项

我有EditText一个自定义ActionModeCallback选项,可以通过setCustom[Insertion/Selection]ActionModeCallback.

如果选择了该字段并旋转了屏幕,则某些键盘会显示Extracted Text UI,该 UI 不再具有自定义菜单项。

有没有办法让我控制Extracted Text UI中的上下文菜单项,或者将这些项提供给 UI?

如果可能,我不希望禁用提取的文本 UI

看来我可以通过以下子类来做到这一点InputMethodService如何修改 ExtractedEditText for a custom keyboard in Android。但这似乎定义了一个系统范围的 IME,这并不理想。

有没有更好的方法来解决这个问题?

参考:

提前致谢,