如何获取(或制作)对Android EditText

时间:2017-07-06 10:08:15

标签: android android-edittext keyboard

我正在制作一个我希望包含在应用中的自定义键盘。我已经知道了how to make a system keyboard。我不想这样做,因为它需要用户安装。

每当用户按下键盘上的某个键时,它应该将关键文本发送给当前具有焦点的EditText(如果有的话)。

documentation states

  

编辑器需要与IME交互,通过接收命令   这个InputConnection接口,并通过发送命令   InputMethodManager

如下图所示(ViewEditText)。

enter image description here

这听起来好像我应该使用输入连接与EditText进行通信。所以我的问题是,我的自定义键盘视图如何获得对当前焦点EditText的输入连接的引用。或者它是如何开始这种联系的?

相关

2 个答案:

答案 0 :(得分:2)

正如@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
        }
    }
});

答案 1 :(得分:0)

我想你是说

InputConnection ic = v.onCreateInputConnection(new EditorInfo());