如何在长按EditText Widget时阻止虚拟键盘显示?

时间:2011-10-05 05:35:53

标签: android

我的应用程序中有一个EditText小部件,我将其设置为只读,我想知道用户何时长按它。如果用户点击此小部件,我不希望弹出虚拟键盘。

要停止显示虚拟键盘,我正在使用它:

EditText text =(EditText)findViewById(R.id.editText01); editText.setClickable(假);

这很有效,但如果我使用OnLongClickListener(),我就无法获得任何长按消息。

有谁知道我怎么能阻止弹出键盘出现,但仍然可以获得长按事件?

感谢。

编辑:我实际上尝试了提供给这个问题的前两个答案,但都没有奏效。我最终做的是,我使用了以下的EditText小部件:

editText.setInputType(InputType.TYPE_NULL);
editText.setCursorVisible(false);
editText.setOnLongClickListener(mOnLongClickListener);

setInputType()方法调用会关闭窗口小部件的点击次数。 setOnLongClickListener()例程将处理窗口小部件上的所有长按事件,并从该例程返回一个true,它基本上消耗了长按事件。所以,我现在有一个EditText小部件,在按下时不会弹出虚拟键盘,但长按该小部件会调用我的监听器方法。

2 个答案:

答案 0 :(得分:2)

button.setOnLongClickListener (View.OnLongClickListener l(){

//override the method  

//then do this

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

答案 1 :(得分:1)

尝试使用此选项和可用选项。

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

我的问题是,当我的活动开始时,如果有EditText,kepyboard会自动加速。所以,我在OnCreate()中使用了上面的内容。尝试使用不同的选项而不是“.SOFT_INPUT_STATE_ALWAYS_HIDDEN”

相关问题