显示没有EditText的软件键盘

时间:2012-02-16 12:50:28

标签: android android-edittext

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

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

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

4 个答案:

答案 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