在没有输入区域的活动上显示数字小键盘

我使用下面的代码在我的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 )。

链接地址: http://www.djcxy.com/p/93017.html

上一篇: Display a numeric keypad on activity without an input area

下一篇: Firebase hosting using custom domain has SSL cert pointing to firebase.com