我正在开发Droid Incredible(并且已经在1.5 AVD仿真器上进行了测试),我的标签小部件中的一个标签包含一个列表视图和一个带有EditText和一个发送按钮的行(用于聊天功能)。单击“发送”后,我将使用以下内容关闭软键盘,但它无效。这与我在其他地方发现的代码相同,即人们的投票是正确的。
看到我遗失的任何东西?
// in Button's onClick():
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry);
// Handle button click ...
chatTextBox.setText("");
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
我也尝试将标志改为0.没有运气。谁知道怎么了?
****编辑****刚刚意识到我最初使用的是hideSoftInputFromInputMethod()
而不是hideSoftInputFromWindow()
。改变它并没有使它工作......
答案 0 :(得分:21)
将HIDE_IMPLICIT_ONLY更改为0(我从hideSoftInputFromWindow()
更改为hideSoftInputFromInputMethod()
后)。
但是我不确定为什么HIDE_IMPLICIT_ONLY无效,因为我没有在菜单上长按显式打开键盘。
答案 1 :(得分:14)
防止它在AndroidManifest.xml文件中活动的另一个选项
android:windowSoftInputMode =“stateAlwaysHidden” - 此方法将阻止在加载活动时加载/显示键盘。但是当您单击edittext等可编辑组件时,键盘将会打开。 完美的我的要求。
<activity
android:name=".Name"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden">
答案 2 :(得分:11)
1.首先用键盘绑定编辑文本标记并打开
即inputMethodManager.showSoftInput(_edittext, 0);
//此处_edittext是视图的实例
2.如果编辑文本从屏幕隐藏
,键盘将自动隐藏 3.edit文本仍在屏幕上,但您想要隐藏键盘然后使用下面的代码
imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0);
//如果edittext不在屏幕上或没有聚焦,这将不起作用。
答案 3 :(得分:0)
尝试在 onResume/onCreate 中执行:
rootView.requestFocus();
rootView 是您的主视图。这会将焦点从 EditText 上移开。