我的目标是在某些事件上显示/隐藏屏幕软件键盘并拦截该键盘的输入。
我发现可以为某些View
类后代显示软键盘,但我不需要在屏幕上显示文本编辑小部件的任何直观表示,只需要以编程方式显示/隐藏软键盘的能力输入拦截。
实现这一目标的最佳方法是什么?
答案 0 :(得分:15)
即使这个问题在大约一年前被问到,但它没有一个公认且完全有帮助的答案,因为我自己遇到了同样的问题,但我会分享我的解决方案:
正如维克拉姆指出的那样,这是显示软输入的方式:
InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);
但是您还必须将视图设置为可聚焦且可在触摸模式下对焦:
myView.setFocusable(true);
myView.setFocusableInTouchMode(true);
或在您的视图中使用XML:
android:focusable = "true"
android:focusableInTouchMode = "true"
答案 1 :(得分:3)
您可以使用以下方式强制显示软键盘:
InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);
并隐藏:
((InputMethodManager) YourActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(findViewById(R.id.YOUR_VIEW).getWindowToken(), 0);
答案 2 :(得分:2)
实际上,您可以always
显示来自清单的软键盘输入。将此行添加到要显示软键盘的每个活动:
android:windowSoftInputMode="stateAlwaysVisible"
无论视图中是否有编辑文本,都会显示软键盘。 例如:
<activity android:name=".ChatActivity"
android:windowSoftInputMode="stateAlwaysVisible">
</activity>
答案 3 :(得分:0)
但是如何让用户输入输入内容呢?
您可以使用EditText
作为view
参数,但不必向用户显示,而是为{创建一个父视图(例如LinearLayout
) {1}}视图
和editText
作为父视图的setVisibility
。
此外,您可以继续使用gone
EditText.addTextChangedListener