我使用以下代码在我的Activity
中弹出软输入键盘InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.getInputMethodList();
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
显示字母键盘。
但我想显示数字键盘。
请注意我知道使用setInputType()与Edittext或TextView一起使用时,但我希望能够显示没有输入区域(如EditText)的键盘,只需按键盘上的按键即可。
任何人都可以确认这是否可行,如果可以,怎么可以实现?
答案 0 :(得分:2)
这确实是可以实现的。
覆盖onCreateInputConnection
并请求数字小键盘:
public class CustomView extends View {
[your methods here]
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection connection = super.onCreateInputConnection(outAttrs);
outAttrs.inputType |= InputType.TYPE_CLASS_NUMBER;
return connection;
}
}
您已将[{1}}子类化以创建自己的自定义视图:
View
在此自定义视图中,您使用InputMethodManager
来显示键盘。该经理将把输入委托给InputConnection
,然后委托给InputMethod
。
要请求显示的键盘是数字,您需要覆盖onCreateInputConnection
以返回数字小键盘。您可以解决问题并实施自己的BaseInputConnection
,或者您可以重复使用public class CustomView extends View {
[your methods here]
}
为您创建的那个(在这种情况下为super
)并设置您关注的属性(View
)。
答案 1 :(得分:-1)
尝试使用“onKeyDown”方法,我使用它们来捕获我应用程序中手机上的“后退”硬键,该方法的一个示例,使用back作为其监听的按钮,将
public boolean onKeyDown(int keyCode, KeyEvent event){
if((keyCode == KeyEvent.KEY_BACK)){
back();
}
return super.onKeyDown(keyCode,event);
}
但不是使用KeyEvent.KEY_BACK,而是尝试使用KeyEvent.KEYCODE_P。如果这可以在软键盘上工作,我不可能,但它值得一试!祝你好运