显示没有EditText的软件键盘

Nek*_*nto 14 android android-edittext

我的目标是在某些事件上显示/隐藏屏幕上的软件键盘并拦截来自该键盘的输入.

我发现可以为某些View类后代显示软键盘,但我不需要在屏幕上显示文本编辑小部件的任何可视化表示,只需要通过输入拦截以编程方式显示/隐藏软键盘.

实现这一目标的最佳方法是什么?

bri*_*tzl 18

即使这个问题在大约一年前被问到,它也没有一个被接受且完全有帮助的答案,因为我自己遇到了同样的问题,但我会分享我的解决方案:

正如Vikram指出的那样,这是显示软输入的方式:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);
Run Code Online (Sandbox Code Playgroud)

您还必须将视图设置为可聚焦且可在触摸模式下聚焦:

myView.setFocusable(true);
myView.setFocusableInTouchMode(true);
Run Code Online (Sandbox Code Playgroud)

或者在您的视图中XML:

android:focusable = "true"
android:focusableInTouchMode = "true"
Run Code Online (Sandbox Code Playgroud)

  • 你需要更具体一点.截取哪种方式?您可以覆盖View.onKeyDown(int keyCode,KeyEvent事件).你是这个意思吗? (2认同)

Vik*_*ram 5

您可以使用以下命令强制显示软键盘:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);
Run Code Online (Sandbox Code Playgroud)

并隐藏:

((InputMethodManager) YourActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(findViewById(R.id.YOUR_VIEW).getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)