17

我正在 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。没有运气。有谁知道怎么回事??

****EDIT**** 刚刚意识到我最初使用hideSoftInputFromInputMethod()的是hideSoftInputFromWindow(). 改变它并没有使它工作......

4

4 回答 4

24

将 HIDE_IMPLICIT_ONLY 更改为 0 做到了(在我更改为hideSoftInputFromWindow()from of 之后hideSoftInputFromInputMethod())。

但是我不确定为什么 HIDE_IMPLICIT_ONLY 不起作用,因为我没有通过长按菜单明确打开键盘。

于 2010-05-09T01:31:09.620 回答
15

防止它在 AndroidManifest.xml 文件中活动的另一个选项

android:windowSoftInputMode="stateAlwaysHidden" - 此方法将在加载 Activity 时阻止加载/显示键盘。但是当你点击像edittext这样的可编辑组件时,键盘会打开。非常适合我的要求。

<activity
            android:name=".Name"
            android:label="@string/app_name" 
            android:windowSoftInputMode="stateAlwaysHidden">
于 2012-05-18T22:04:50.850 回答
13

1.首先用键盘绑定您的编辑文本标记并打开
inputMethodManager.showSoftInput(_edittext, 0);//这里_edittext是视图实例

2.如果编辑文本从屏幕上隐藏,键盘将自动隐藏

3.edit 文本仍在屏幕上,但您想隐藏键盘然后使用下面的代码 imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0);//如果 edittext 不在屏幕上或没有聚焦,这将不起作用。

于 2013-11-19T13:43:49.500 回答
0

尝试在 onResume/onCreate 中做:

rootView.requestFocus();

rootView 是您的主要视图。这会将焦点从 EditText 上移开。

于 2021-02-21T14:02:45.963 回答