2

我使用以下代码在我的 Activity 中弹出软输入键盘


InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.getInputMethodList();

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

这将显示字母键盘。

但我想显示数字键盘。

请注意,我知道 setInputType() 在与 Edittext 或 TextView 一起使用时有效,但我希望能够在没有输入区域(例如 EditText)的情况下显示键盘,并且只需听键盘上的按键。

谁能确认这是否可行,如果可以,如何实现?

4

2 回答 2

2

这确实是可以实现和可能的。

TL;博士:

覆盖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)。

于 2015-04-23T18:16:21.167 回答
-1

尝试使用“onKeyDown”方法,我使用它们在我的应用程序中捕获手机上的“返回”硬键,该方法的一个示例,使用返回作为其监听的按钮,将是

    public boolean onKeyDown(int keyCode, KeyEvent event){
      if((keyCode == KeyEvent.KEY_BACK)){
          back();
      }
         return super.onKeyDown(keyCode,event);
   }

但不要使用 KeyEvent.KEY_BACK,而是尝试使用 KeyEvent.KEYCODE_P。我不肯定这是否适用于软键盘,但值得一试!祝你好运

于 2010-10-20T17:19:27.877 回答