2012-04-19 63 views
0

我通过扩展View类创建了一个自定义视图。点击时,我想弹出软键盘,就像使用编辑文本(即打开预测文本并能够选择所有可用输入法)一样。使用Inputmethod连接视图

我试图让视图扩展为onclicklistener,当被调用时,它使用InputMethodManager来显示软键盘,然后使用Onkeydown来拦截按键。这是笨重的,不起作用,因为:

  1. 我只能够在标准文本和数字输入方法之间切换。没有其他的输入法可以工作(如果用户有一个,就像编辑文本一样,我需要能够切换到日文输入法)。

  2. 没有预测文本,这对于程序是绝对必要的,因为它需要用户输入日文汉字。

有没有什么办法在标准视图和IME之间建立一个类似于edittext的连接?

回答

1

要显示预测文本,应设置可由系统接受的EditorInfo类型。类似这样的:

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 
     // TODO Auto-generated method stub 
     // Set your EditorInfo type in the onCreateInputConnection 
     outAttrs.actionLabel = null; 
     outAttrs.inputType = InputType.TYPE_CLASS_TEXT; 
     outAttrs.imeOptions = EditorInfo.IME_ACTION_NEXT; 
     return new MyBaseInputConnection(this, false); 
}