2010-06-24 58 views
7
<EditText android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_weight="1" 
    android:id="@+id/name" android:singleLine="true" 
    android:maxLength="12" android:capitalize="none" android:inputType="text" /> 
<Button android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/search_button" 
    android:text="Search" /> 

我有这个在我的应用程序的顶部。当应用程序启动时,EditText被突出显示为橙色并在其中有一个光标;当点击EditText时,弹出软键盘。用户使用它来输入EditText。Android:EditText和Button;当点击按钮时,放开EditText并隐藏软键盘?

但是,当他们点击按钮时,我的onClick方法会触发并执行所有应有的操作,但软键盘保持在屏幕上并且EditText仍然用光标高亮显示。

我也有,在按钮的onclick的顶部:

findViewById(R.id.name).clearFocus(); 

虽然如此,在EditText上似乎并没有明确的焦点。我如何使按钮实际上像提交表单一样行事?

此外,我不转换到按钮的点击不同的活动。我认为这是典型的情况,可能是他们不打扰隐藏键盘的原因。不过,我想让搜索框和按钮保持在屏幕顶部,所以当按下按钮时,我只是动态地填充和添加视图到屏幕上。

我该如何达到自己想要的行为?

回答

13

你可以通过调用这个来隐藏键盘。

InputMethodManager imm = (InputMethodManager) getSystemService(
    INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(getWindowToken(), 0); 
+0

是的,但这真的是最好的方式去做这件事吗? – Ricket 2010-06-24 13:42:59

+0

嗯,它的工作...所以我想这没关系...尽管如此,似乎仍然是一个黑客... – Ricket 2010-06-24 13:45:56

+1

这不是一个破解,它是如何完成Android的源代码。我假设它是针对用户按下done来关闭IME的,但是如果他们不这样做或者您想手动关闭它,那么这就是您在Android自行关闭之前必须关闭IME的方式。 – 2010-06-24 13:47:03

相关问题