题
我想一个数字键盘是有去或做的按钮关闭和执行的计算类。由于从commonware就从哪里开始小费我得到了这个美丽的工作在模拟器上。后来我才上加载到我的HTC渴望测试,它都不起作用。我敢肯定那一定是因为HTC感觉有它自己的IME但肯定是一种方法,使HTC手机这项工作?任何人设法解决这个问题?
解决方案
我可以复制我在想什么,你看到的HTC难以置信。
不是所有的软键盘将支持IME动作按钮。有些人,像涂鸦软“键盘”,可能没有任何按键可言,更不用说IME动作按钮。即使是兼容性定义文档只字未提需要与供给的键盘这样的操作按钮设备
因此,你不应该依赖于输入法操作按钮。如果它确实存在,用户可以使用它。然而,总是有办成的一些其他手段无论你的目标是。
其他提示
我检测DONE / GO / RETURN按钮是否已经按下使用onEditorActionListener,但以及接受IME选项的任何键盘检查IME选项和的KeyEvents到盖HTC键盘。
(此代码适用于HTC难以置信的键盘以及具有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;
}
}
});
我使用一个EditText用的inputType =“数量”和通过修改阿莎的溶液解决了这个问题:
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的是需要的,因为软键盘甚至后结算焦点仍然存在。
不隶属于 StackOverflow