2011-10-05 34 views
2

我的应用程序中有一个EditText小部件,我已将其设置为只读,并且我想知道用户何时长按。如果用户点击此小部件,我不希望虚拟键盘弹出。如何在EditText Widget上长按时防止虚拟键盘显示?

要停止从出现的虚拟键盘,我使用的是这样的:

的EditText文本=(EditText上)findViewById(R.id.editText01); editText.setClickable(false);

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

有谁知道我可以如何防止弹出键盘出现,但仍然得到长按事件?

谢谢。

编辑:我实际上尝试了提供给这个问题的前两个答案,都没有工作。我最终什么事做,是为小部件的EditText我用下面的:

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

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

回答

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

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

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

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

相关问题