2012-02-16 106 views
10

我的目标是显示/隐藏某个事件的屏幕软键盘并截取来自该键盘的输入。显示没有EditText的软件键盘

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

达到此目的的最佳方法是什么?

回答

3

您可以强制Softkeyboard通过使用显示:

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); 
+0

此方法无效。 showSoftInput返回false,并且没有显示键盘 – Nekuromento 2012-02-17 09:38:34

+0

它应该可以工作,但是你可以尝试下面一行: im.showSoftInput(this,InputMethodManager.SHOW_IMPLICIT); – Vikram 2012-02-17 10:48:11

15

即使这个问题几乎在一年前问它没有一个公认的和充分有用的答案,因为我自己遇到了同样的问题我虽然我会分享我的解决方案:

由于Vikram指出这是显示软输入的方式:

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" 
+0

你如何拦截键盘输入? – bgolson 2013-04-22 22:47:43

+1

你需要更具体些。以哪种方式拦截?您可以重写View.onKeyDown(int keyCode,KeyEvent事件)。你是这个意思吗? – britzl 2013-04-24 06:12:10

+0

+1谢谢!这就是我一直在寻找的。 – bgolson 2013-04-24 14:39:26

2

其实,你可以always秀清单中的软键盘输入。该行添加到您想要显示的软键盘每个活动:

android:windowSoftInputMode="stateAlwaysVisible" 

软键盘将显示,无论是否有在视图中没有的EditText。 示例:

<activity android:name=".ChatActivity" 
    android:windowSoftInputMode="stateAlwaysVisible"> 

</activity> 
相关问题