2 baifaxiaoyao baifaxiaoyao 于 2012.09.12 09:59 提问

关闭/隐藏android软件的键盘

在我的布局里有一个EditText和一个Button。在编辑框中输入完之后点击按钮,我想要隐藏虚拟键盘。我知道这是很简单的,一两行代码就能实现。我在哪能找到一个例子?

10个回答

gouxiaojin
gouxiaojin   2012.09.12 10:24
已采纳

你可以使用InputMethodManager来让Android隐藏虚拟键盘,调用hideSoftInputFromWindow,传递带有你的编辑框的窗口标记。

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

这将让键盘在所有的情况下都被隐藏。在一些情况下,你可能想要传递InputMethodManager.HIDE_IMPLICIT_ONLY作为第二个参数,来保证当使用者并不是十分明确的推动它是否出现的时候(通过按菜单键)你只是隐藏了键盘。

baifaxiaoyao
baifaxiaoyao 这个方法刚测试了,可以,谢谢gouxiaojin
5 年多之前 回复
gouxiaojin
gouxiaojin hideImplicitOnly只是当编辑框得到焦点时,键盘自动打开的情况下使用。在你的情况下,你可能是按住编辑框,表明你想要输入,这是一个明确的行为。
5 年多之前 回复
suannai0314
suannai0314 酷。只是为了说明,如果存在的话并不否认它,但是不会阻止它弹出,对吗?
5 年多之前 回复
baifaxiaoyao
baifaxiaoyao 谢谢,如果0作为第二个参数的话它似乎是起作用的,但是如果我使用InputMethodManager.HIDE_IMPLICIT_ONLY,键盘从来都不会被隐藏(尽管我并没有按住菜单键)。
5 年多之前 回复
liangchichexin
liangchichexin   2012.09.12 10:40

对隐藏软件的键盘也有用的是:

getWindow().setSoftInputMode(
      WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

这个可以被用来控制键盘,直到使用者确实碰了编辑框。

mansuifengqi
mansuifengqi 通过在你控件的清单文件中添加android:windowSoftInputMode="stateHidden"也能达到同样的效果。
5 年多之前 回复
Sueyexin
Sueyexin   2012.09.12 10:55

你可以在oncreate()试试下边的代码

EditText edtView=(EditText)findViewById(R.id.editTextConvertValue);
edtView.setInputType(0);
niangzhi
niangzhi   2012.09.12 11:16

在我的情况下,我的app的顶部是一个tabHost,当我切换tab的时候我想要隐藏键盘-我从tabHostView得到了窗口命令。

 tabHost.setOnTabChangedListener(new OnTabChangeListener()
        {
        public void onTabChanged(String tabId)
            {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(tabHost.getApplicationWindowToken(), 0);
            }
        }
cwjxiuxing
cwjxiuxing   2015.05.07 13:41

无效.

应该是用getApplicationWindowToken, 而非getWindowToken

sxjiangdongqin
sxjiangdongqin   2015.06.09 14:10

一、布局中软键盘自动弹出

bargain_dialog_offer_edit.requestFocus();

bargain_dialog_offer_edit.setFocusable(true);

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);

imm.showSoftInputFromInputMethod(bargain_dialog_offer_edit.getWindowToken(),0);

二、布局中软键盘自动关闭

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(talking_edit.getWindowToken() , 0);

三、对话框中软键盘自动弹出和关闭

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

qazwsx132656526
qazwsx132656526   2015.08.31 20:02

你可以使用InputMethodManager来让Android隐藏虚拟键盘,调用hideSoftInputFromWindow,传递带有你的编辑框的窗口标记

oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.10.02 11:49

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

u1254z62
u1254z62   2017.01.03 18:15

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

hht3250
hht3250   2017.05.10 01:32

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!