在没有输入区域的活动上显示数字小键盘
我使用下面的代码在我的Activity中弹出软输入键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.getInputMethodList();
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
这显示字母键盘。
但我想显示数字键盘。
请注意,我知道使用setInputType()在与Edittext或TextView一起使用时会起作用,但是我希望能够显示没有输入区域(如EditText)的键盘,并只需听按键盘上的按键即可。
任何人都可以证实这是否可能,如果有的话,如何实现?
尝试使用“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。 如果这可以在一个软键盘上工作,我不会后悔,但它值得一试! 祝你好运
这确实是可行的,也是可能的。
TL; DR:
重写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;
}
}
完整说明
您已将子View
创建为您自己的自定义视图:
public class CustomView extends View {
[your methods here]
}
在这个自定义视图中,您使用InputMethodManager
来显示键盘。 这位经理将把输入委托给一个InputConnection
,然后它将委托给一个InputMethod
。
要请求显示的键盘是数字键盘,您需要覆盖onCreateInputConnection
以返回数字键盘。 你可能会遇到麻烦并且实现你自己的BaseInputConnection
,或者你可以重用super
(在本例中为View
)为你创建的一个,并设置你关心的属性( inputType
)。
上一篇: Display a numeric keypad on activity without an input area
下一篇: Firebase hosting using custom domain has SSL cert pointing to firebase.com