Android显示键盘和注册键

时间:2012-03-04 18:50:20

标签: java android keyboard surfaceview

我的应用程序只是一个表面视图。我所做的就是在surfaceview上绘制东西等等。所以我想要的一个功能是,如果用户触摸surfaceview的一角,它会显示键盘,然后他们可以键入它。请注意,我的应用中没有任何EditTexts或Textbox。如何调用键盘弹出,然后如何获取用户按下的所有键?我不想要钥匙,我只想要他们输入的字符串。我如何实现这个目标?

1 个答案:

答案 0 :(得分:0)

这不是一项微不足道的任务。

首先,您需要覆盖方法onCreateInputConnection()

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 
    return new MyInputConnection(this, surfaceView, false);    
}

然后你必须实现这个输入连接类,派生自BaseInputConnection

class MyInputConnection extends BaseInputConnection{

    private MyActivity activity;

    public MyInputConnection(MyActivity activity, View targetView, boolean fullEditor)
    {
       super( targetView, fullEditor );
       mActivity = activity;
    }

    public boolean commitText(CharSequence text, int newCursorPosition){ 
        myActivity.drawText((String) text); 
        return true; 
    } 

您需要覆盖更多方法(请参阅参考资料),但首先要关注commitText()。 DrawText()是一种在表面上呈现文本的方法,您必须提供适合您需求的实现。