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

时间:2010-10-20 17:08:32

标签: android numeric android-softkeyboard

我使用以下代码在我的Activity

中弹出软输入键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.getInputMethodList();

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

显示字母键盘。

但我想显示数字键盘。

请注意我知道使用setInputType()与Edittext或TextView一起使用时,但我希望能够显示没有输入区域(如EditText)的键盘,只需按键盘上的按键即可。

任何人都可以确认这是否可行,如果可以,怎么可以实现?

2 个答案:

答案 0 :(得分:2)

这确实是可以实现的。

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;
    }
}

完整解释

您已将[{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。如果这可以在软键盘上工作,我不可能,但它值得一试!祝你好运