- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个我想包含在应用程序中的自定义键盘。我已经知道how to make a system keyboard .我不想这样做,因为它需要用户安装。
每当用户按下键盘上的一个键时,它应该将键文本发送到当前具有焦点的任何 EditText
(如果有)。
An editor needs to interact with the IME, receiving commands through this
InputConnection
interface, and sending commands throughInputMethodManager
.
如下图所示(其中 View
是 EditText
)。
这听起来像是我应该使用输入连接来与 EditText
通信。所以我的问题是,我的自定义键盘 View 如何获得对当前聚焦的 EditText
的输入连接的引用。或者它如何启动该连接?
相关
最佳答案
正如@pskink 在评论中提到的,您可以使用
InputConnection ic = editText.onCreateInputConnection(new EditorInfo());
获取对 EditText
的输入连接的引用。
当 EditText
通过添加监听器获得焦点时,它可以传递给自定义键盘。
// get the input connection from the currently focused edit text
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
InputConnection ic = editText.onCreateInputConnection(new EditorInfo());
keyboard.setInputConnection(ic); // custom keyboard method
}
}
});
关于android - 如何获取(或制作)对 Android EditText 的 InputConnection 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44945918/
这个问题在这里已经有了答案: Android Studio 3.1 EditText StackOverflowError (5 个答案) 关闭 4 年前。 我在 inputmethod.Input
我正在为 Android 开发软键盘。我想使用 InputConnection.commitCorrecrion() 更正一些文本,如果按下对应于 Keyboard.KEYCODE_DONE 的键。但
我在 crashlytics 上收到此错误日志。我不知道是什么导致了这次崩溃。它发生在 Android 4.x、5.x、6.x 设备上。 (三星、索尼、LGE 等) Fatal Exception:
InputConnection.commitText(CharSequence text, int newCursorPosition) 的文档表示 newCursorPosition 意味着: in
注意:我尝试解决的问题仅限于运行 SDK 23 (Marshmallow) 的基于 Rockchip RK312X 的无名中国平板电脑。似乎没有其他设备受到影响,但不幸的是,我不得不使用那些糟糕的设备
我正在尝试实现自己的 android IME。在 InputMethodService.onStartInputView 中,我保存了对 getCurrentInputConnection 返回的 I
为什么我在 InputConnection 中有一个 setSelection , 但不是 getSelection()? 我是否应该执行 getTextBeforeCursor(VERY_HIGH_
我尝试使用 alertdialog 进行输入,但是当我单击 editText 时,系统将显示“W/IInputConnectionWrapper:finishComposingText on inac
我已经编写了一个 IME (InputMethodService),我需要从它正在编辑的 EditText 中获取所有文本。我知道一种方法: InputConnection inputConnecti
这个问题在这里已经有了答案: Android input connection error (1 个回答) 关闭6年前。 当我关闭我的应用程序时,我在 LogCat 上收到此消息 非 Activity
我有一个 flutter 错误: W/IInputConnectionWrapper: getExtractedText on inactive InputConnection 当我从 TextEdi
在我的应用程序中,每次我在 EditText 字段上使用光标执行任何操作时,我都会收到 3 个“inactive InputConnection”警告(下面的 logCat)。 即使我选择另一个
这是我的课: public class Insert extends Activity { EditText name,surname,age; Button insert;
我实现了一个名为 RemoteInput 的输入法,只是扩展了 InputMethodService,没有 InputViews 也没有键盘。当用户选择RemoteInput 作为默认输入法时,Rem
我正在制作一个我想包含在应用程序中的自定义键盘。我已经知道how to make a system keyboard .我不想这样做,因为它需要用户安装。 每当用户按下键盘上的一个键时,它应该将键文本
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
当我点击 google 登录按钮时出现此错误:W/IInputConnectionWrapper(20367):在非 Activity 的 InputConnection 上显示StatusIcon
环境:Android Studio 3.1.1代码: import com.firebase.ui.auth.AuthUI; ... private void startSignIn()
当我单击工具栏后退按钮(如 gif 所示)时发生错误:Attempt to invoke interface method 'boolean android.view.inputmethod.Inpu
我是一名优秀的程序员,十分优秀!