我的应用程序中有一个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小部件,在按下时不会弹出虚拟键盘,但长按该小部件会调用我的监听器方法。
答案 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”