2011-09-04 153 views
0

这里的情况:我显示的屏幕有4个输入字段,其中2个需要用户(数字字段),其他(文本字段)编辑 - 显示一些文本信息,用户可以通过ListView更改,但它关闭以进行手动编辑。 我在我的XML文件android:editable="false"中使用非数字EditText字段,它有助于在用户点击字段时禁用软键盘弹出。但问题出在用户编辑数字字段时,软键盘不能在用户关注文本字段后隐藏。如何在软键盘显示时隐藏EditText软键盘?

那么当用户关注我的文本字段时,如何隐藏已经显示的软键盘?

的方法,如:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(MEdit1.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

或像这样

MetricEdit = (EditText) findViewById(R.id.MetricEdit); 
MetricEdit.setInputType(0); 

采取任何影响。

提前感谢您的时间。

回答

2

尝试把

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

在onclicklistener为可编辑

,你还可以改变数字的EditText的键盘有一个“做”在底部用以下的EditText:

android:imeOptions="actionDone" 

in the xml for edittext

+0

凯文感谢您的想法,但这段代码没有解决问题。当用户选择其他文本字段时,我仍然需要自动隐藏软键盘。 – Dimon

+0

在每个edittext onclicklisteners中,您可以为每个其他edittext执行hidesoftinputfromwindow行,以便所有可能的键盘都将被关闭,除了刚刚打开的键盘。这个对我有用。 –

+0

哦,现在终于有效了。这是我注意力不集中的地方,我在onCreate void这些行的开始处发布了这些消息,但是在我将onClickListener替换为每个EditText后,一切正常。谢谢凯文。 – Dimon

0

这将他lp ..

edittext.setInputType(InputType.TYPE_NULL);  
if (android.os.Build.VERSION.SDK_INT >= 11) 
{ 
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT); 
    edittext.setTextIsSelectable(true); 
} 
+0

好的,sdk_int <11?此解决方案仅适用于11和更高版本? – Dimon

+0

否....第一行'edittext.setInputType(InputType.TYPE_NULL);'是为11以下的SDK .....但如果你运行在Sdk 11和以上的应用程序,如果条件将接管.....所以它将在任何地方完美工作.. !! ...它会隐藏键盘但不会隐藏光标... – ASP