Android:HTC的软键盘控制欲望

时间:2010-09-30 21:20:15

标签: keyboard htcsense android

我想要一个数字键盘,它有一个关闭并执行计算类的go或done按钮。感谢来自通用软件的提示,从哪里开始,我在模拟器上得到了漂亮的工作。然后我来加载我的HTC测试的愿望,它根本不起作用。我敢肯定一定是因为HTC意识到它有自己的ime但是肯定有办法在HTC手机上做这个工作吗?其他人设法解决了这个问题吗?

3 个答案:

答案 0 :(得分:14)

我可以复制我认为您在HTC Incredible上看到的内容。

并非所有软键盘都支持IME操作按钮。有些像Graffiti软键盘一样,根本没有按钮,更不用说IME动作按钮了。即使Compatibility Definition Document也没有说明为设备提供的键盘需要这样的操作按钮。

因此,您不应该依赖IME操作按钮。如果它在那里,用户可以使用它。但是,总是有其他方法来实现你的目标。

答案 1 :(得分:11)

我正在检测是否已使用onEditorActionListener按下DONE / GO / RETURN按钮,但检查IME选项和KeyEvents以覆盖HTC键盘以及任何接受IME选项的键盘。

(此代码适用于HTC Incredible键盘以及任何具有IME选项的键盘)

EditText.setOnEditorActionListener(new TextView.OnEditorActionListener(){
    public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event){
        if(actionId == EditorInfo.IME_ACTION_DONE 
            || actionId == EditorInfo.IME_NULL
            || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){

            //Do something in here
            return true;
        } else {
            return false;
        }
    }
});

答案 2 :(得分:2)

我使用的是带有inputType =“number”的EditText,并通过修改Asha的解决方案来解决问题:

private TextView.OnEditorActionListener numberEnterListener = new TextView.OnEditorActionListener(){
        public boolean onEditorAction(TextView tv, int actionId, KeyEvent event){
            if(actionId == EditorInfo.IME_ACTION_DONE 
                || actionId == EditorInfo.IME_NULL
                || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){

                tv.clearFocus();

                //Stupid keyboard needs to be closed as well
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(tv.getWindowToken(), 0);

                return true;
            } else {
                return false;
            }
        }
    };

焦点已被删除,以便停止显示数字键盘。因为即使在清除焦点后仍然存在软键盘,因此需要使用imm。